Установить местоположение iframe в качестве местоположения в элементе $ _GET

#php #html #.htaccess #iframe

#php #HTML #.htaccess #iframe

Вопрос:

Как я могу правильно установить iframe src в качестве местоположения в $ _GET.

В настоящее время я пытаюсь это:

.htaccess

 RewriteRule ^stream/(.*)$ index.php?p=streamamp;link=$1
  

stream.php /http://bbc.co.uk

 <?php
echo '    
<div class="container" style="height:1000px;">
<iframe src="'.$_GET['link'].'" frameborder="0" width="100%" height="100%"></iframe>
</div>
 ';

?>
  

Это переводит iframe в 127.0.0.1/stream/http://bbc.co.uk когда он должен просто перейти к bbc.co.uk

Комментарии:

1. Звучит как замечательный способ обмануть людей, заставив их думать, что мой сайт является частью вашего сайта…

2. Что, даже если ваш сайт будет четко виден в URL?

3. Это единственное правило перезаписи? Я не вижу ничего, что могло бы превратиться stream.php в stream .

4. Нет, это не так, я вырезал большую его часть, поскольку он большой, извините, я могу повторить $ _GET [‘link’] и получить доступ stream.php перейдя в /stream

5. по какой-то причине, когда я повторяю $ _GET [‘link’], он возвращает http:/bbc.co.uk вместо bbc.co.uk (одна косая черта после http: вместо двух)

Ответ №1:

Как я указал в своем комментарии, вам нужно переписать php-файлы для удаления .php , чтобы опубликованное вами правило соответствовало, например:

 RewriteRule (w ).php $1
RewriteRule ^stream/(.*)$ index.php?p=streamamp;link=$1
  

Это означает, что ваша ссылка будет переписана как so:

 http://example.com/stream.php/http://bbc.co.uk
http://example.com/stream/http://bbc.co.uk
http://example.com/index.php?p=streamamp;link=http://bbc.co.uk
  

Затем ваш php выведет:

 <div class="container" style="height:1000px;">
<iframe src="http://bbc.co.uk" frameborder="0" width="100%" height="100%"></iframe>
</div>
  

Который работает так, как ожидалось.

Комментарии:

1. Здесь та же проблема, она показывает только одну косую черту после http: вместо двух.

2. @user1626410 it only shows one forward slash after http: instead of two Где? На каждом этапе перезаписи в исходном коде отображается 2 и 2.

3. В iframe src это показывает <iframe src=»http:/bbc.co.uk » frameborder=»0″ height=»100%» width=»100%»></iframe>

4. @user1626410 Я не могу воспроизвести вашу проблему. Запустите код точно так, как я его поместил, и удалите все имеющиеся у вас RewriteRules, которых нет в моем сообщении.

Ответ №2:

Сам URL-адрес неверен, ie. это должно было быть в форме

 stream.php?link=http://bbc.co.uk
  

Затем вы получите его в:

  $_GET['link']
  

Другим способом было бы сохранить отображение вышеупомянутой переменной get с соответствующим URL:

ie.

 var urlsMapping = {"bbc":"http://bbc.co.uk","toi":"http://timesofindia.indiatimes.com"}
  

Затем сделайте свой URL таким:

stream.php?link=bbc

Установить iframe src как

 urlsMapping[<?=$_GET['link']?>]
  

Комментарии:

1. Смысл в том, чтобы url stream.php / otherurl был переписан в index.php?p=streamamp;link =otherurl

Ответ №3:

Просто попробуйте это

 RewriteRule ^stream/(. )$ index.php?p=streamamp;link=$1  [L,QSA]
  

Я надеюсь, что это поможет вам.

Ответ №4:

Я исправил это с помощью preg_replace

Возможно, не лучший вариант, однако он сработал.

 <?php
$link = preg_replace('~http:/~si', '', $_GET['link']);
echo '    
<div class="container" style="height:1000px;">
<iframe src="http://'.$link.'" frameborder="0" width="100%" height="100%"></iframe>
</div>
 ';
?>