在PHP中获取iframe的父URL

时间:2010-09-16 08:31:05

标签: javascript php url iframe parent

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

我在IFrame页面尝试了“parent.top.location.href”和“parent.document.referrer”,但这是未定义的。

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

6 个答案:

答案 0 :(得分:6)

  

我也试着回应   IFrame中的“$ _Server [referrer]”   页面,确实返回了IFrame   父网址,但它有多容易   某人操纵推荐人   变量?

非常简单,但禁用JavaScript也是如此!但是,如果某个网站使用您的<iframe>,那么他们在他们的访问者的UA中伪造推荐人将会有点困难。 (如果他们真的坚持隐瞒他们正在使用您的内容这一事实,他们也可以代理您的内容。在这种情况下,您唯一的选择就是不首先发布它。)

为了向“合作伙伴”提供内容,您可以考虑向他们提供令牌(如Twitter / Google / ... API)。如果未使用(或无效)令牌,则显示错误。如果使用了有效令牌,但推荐人有疑问,则应进一步调查。

答案 1 :(得分:4)

尝试:

parent.location.href;

parent.document.URL

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

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

否则,正如@mck89所述:iframe可以使用top.location.href访问父网页的网址。

进一步阅读问题How to prevent my site page to be loaded via 3rd party site frame of iframe

答案 4 :(得分:0)

假设您的小部件的网址没有进行任何重定向等,您应该可以使用:

document.referrer

来自iframe中的javascript,它应该包含父页面的URL。这似乎是YouTube用于跟踪iframe嵌入代码的内容。

答案 5 :(得分:-1)

我会用:

$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的某些散列进行检查