получить родительский URL iframe в PHP - PullRequest
4 голосов
/ 16 сентября 2010

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

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

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

Ответы [ 6 ]

6 голосов
/ 16 сентября 2010

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

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

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

4 голосов
/ 16 сентября 2010

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

parent.location.href;

или

parent.document.URL
2 голосов
/ 22 января 2012

Вы можете использовать следующий код 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);
    ?>
0 голосов
/ 11 сентября 2013

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

$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

0 голосов
/ 12 августа 2012

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

document.referrer

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

0 голосов
/ 16 сентября 2010

Небольшой фрагмент JavaScript на странице iframe-d может «снять кадр» с страницы:

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

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

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

...