Intereting Posts

получить родительский url iframe в PHP

Я создаю виджет, который будет загружаться в IFrame, и пользователи смогут размещать виджет на своем собственном веб-сайте. Как получить URL-адрес веб-сайта, использующего IFrame в javascript и / или PHP? IFrame загружает файл php.

Я пробовал «parent.top.location.href» и «parent.document.referrer» на странице IFrame, но это не определено.

Я также попытался повторить «$ _Server [referrer]» на странице IFrame и вернул родительский URL IFrame, но насколько легко кому-то манипулировать переменной referrer? Я не хочу получать вводящую в заблуждение информацию. Цель: я создал виджет и хочу, чтобы зарегистрированные пользователи могли использовать этот виджет на своем сайте. Я хочу, чтобы узнать, кто использует виджет, и если незарегистрированный пользователь использует его на своем сайте, тогда виджет не будет отображаться

Попробуйте:

parent.location.href; 

или

 parent.document.URL 

Я также попытался повторить «$ _Server [referrer]» на странице IFrame и вернул родительский URL IFrame, но насколько легко кому-то манипулировать переменной referrer?

Довольно легко, но так отключает JavaScript! Однако, если веб-сайт использует ваш <iframe> им будет немного сложно подделать реферер в UA своего посетителя. (Они также могут проксировать ваш контент, если они действительно настаивают на том, чтобы скрыть тот факт, что они используют ваш контент. В этом случае ваш единственный выбор – не публиковать его в первую очередь.)

Чтобы представить контент для «партнеров», вы можете рассмотреть возможность предоставления им токена (например, API Twitter / Google / …). Если не используется (или недействительный) токен, введите ошибку. Если используется действительный токен, но реферер подозрительный, вам следует изучить его дальше.

Вы можете использовать следующий PHP-код, чтобы URL-адрес родительского окна получал значения в массиве:

  <?php //Getting the parent window parameters $getURLVar = str_replace("?","",strrchr($_SERVER['HTTP_REFERER'],"?")); $getURLVar = str_replace("&","=",$getURLVar); $getURLVar = str_getcsv($getURLVar,"="); $i=0; foreach ($getURLVar as $value) { if ($i % 2) $value1[$i]=$value; else $value2[$i]=$value; $i++; } $getURLVar =array_combine($value2,$value1); print_r($getURLVar); ?> 

Небольшая часть JavaScript на странице iframe-d может «раскодировать» страницу:

 if (top != self) {top.location.replace(self.location.href);} 

В противном случае, поскольку @ mck89 говорит: iframe может получить доступ к URL-адресу родительской страницы, используя top.location.href .

Дальнейшее чтение вопроса. Как предотвратить загрузку страницы моего сайта через фрейм стороннего сайта iframe .

Предполагая, что URL вашего виджета не выполняет никаких переадресаций и т. Д., Вы должны иметь возможность использовать:

 document.referrer 

изнутри javascript внутри вашего iframe и должен содержать URL-адрес родительской страницы. Это похоже на то, что YouTube делает для отслеживания в своих кодах встраивания iframe.

Я хотел бы использовать:

 $qStr = explode('?', $_SERVER['HTTP_REFERER']); $t= explode('&', $qStr[1]); foreach ($t as $val) { $a = explode('=', $val); $args[$a[0]]=$a[1]; } // to check the arguments print_r($args); // to check the url echo $qStr[0]; 

$ args будет содержать токен безопасности, который будет проверяться некоторым хешированием против URL-адреса