Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取PHP中iframe的父url_Javascript_Php_Url_Iframe_Parent - Fatal编程技术网

Javascript 获取PHP中iframe的父url

Javascript 获取PHP中iframe的父url,javascript,php,url,iframe,parent,Javascript,Php,Url,Iframe,Parent,我正在创建一个小部件,它将加载到IFrame中,用户将能够将小部件放在自己的网站上。如何获取在javascript和/或PHP中使用IFrame的网站的URL?IFrame加载一个php文件 我在IFrame页面中尝试了“parent.top.location.href”和“parent.document.referer”,但没有定义 我还尝试在IFrame页面中回显“$\u Server[referer]”,它确实返回了IFrame父URL,但是对于某些人来说,操纵referer变量有多容易呢

我正在创建一个小部件,它将加载到IFrame中,用户将能够将小部件放在自己的网站上。如何获取在javascript和/或PHP中使用IFrame的网站的URL?IFrame加载一个php文件

我在IFrame页面中尝试了“parent.top.location.href”和“parent.document.referer”,但没有定义

我还尝试在IFrame页面中回显“$\u Server[referer]”,它确实返回了IFrame父URL,但是对于某些人来说,操纵referer变量有多容易呢?我不想得到误导性的信息。 目标:我创建了一个小部件,并希望允许注册用户在他们的站点上使用该小部件。我希望能够找出谁在使用该小部件,如果未注册用户在其网站上使用该小部件,则该小部件将不会显示

请尝试:

parent.location.href;

我也试着回应 IFrame中的“$\u服务器[Referer]” 页面,并返回了IFrame 父URL,但它对用户来说有多容易 操纵推荐人的人 变量

非常简单,但禁用JavaScript也是如此!然而,如果一个网站使用你的
,他们就很难在访问者的UA中伪造推荐人。(如果他们真的坚持隐瞒他们正在使用你的内容,他们也可以代理你的内容。在这种情况下,你唯一的选择就是一开始就不发布。)


<>为了给“合作伙伴”提供内容,你可以考虑给他们提供一个令牌(比如推特/谷歌/…API)。如果未使用(或无效)令牌,则显示错误。如果使用了有效令牌,但推荐人可疑,则应进一步调查。

iframe-d页面中的一小块JavaScript可以“取消”页面框架:

if (top != self) {top.location.replace(self.location.href);}
否则,如前所述:iframe可以使用
top.location.href
访问父页面的URL


进一步阅读此问题。

您可以使用以下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);
    ?>

假设您的小部件的URL不执行任何重定向等操作,您应该能够使用:

document.referrer
它应该包含父页面的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进行哈希检查。

“…您应该进一步调查。”-如果他们仍然不合作,则撤销该令牌:)这似乎仅在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];