PHP,HTTP_REFERER无法使用iframe?

时间:2009-12-18 04:03:44

标签: php iframe http-referer

好的,这是我的情况。

我有一个页面index.php,它是mainsite(flash网站)

我有另一个名为iframe.php的页面,其中包含index.php的iframe

另一页,test.php。里面有2个链接,第一个链接直接到index.php,另一个链接到iframe.php

我测试过:

  • 我点击第一个链接,当我跟踪/回显HTTP_REFERER时,它显示“test.php”,但是

  • 我点击第二个链接,当我跟踪/回显HTTP_REFERER时,它会显示“iframe.php”。

为什么显示“iframe.php”? HTTP_REFERER对iframe不起作用吗?

当我点击第二个链接时,有没有得到“test.php”?

源代码:index.php

<html>
<head> // Some headers information
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
    <?php
if(!empty($_SERVER['HTTP_REFERER'])){
?>
    flashvars.link       =  '<?php echo $_SERVER['HTTP_REFERER']; ?>';
<?php
}
?>
var params = {};
var attributes = {};
swfobject.embedSWF("main.swf, "content", "100%", "100%", "9", "expressInstall.swf", flashvars, params, attributes);
</script>
</head>
<body>
    <div id="content">
    <a href="http://www.adobe.com/go/getflashplayer">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    </div>
</body>
</html>

iframe.php的源代码

<html> headers tag
...
<body>
<center><iframe src="index.php" mce_src="index.php" frameborder="0" height="500" scrolling="no" width="500"></iframe></center>
</body>
</html>

test.php的源代码:

....
<a href="iframe.php" target="_blank">This is Iframe</a> <br><br>
....
<a href="index.php" target="_blank">This is normal link</a> <br><br>

2 个答案:

答案 0 :(得分:1)

在任何一种情况下,您都会看到index.php的输出。原因如下:

情景1)

当您从index.php中的链接点击test.php时,会加载index.phptest.php作为HTTP_REFERER)。

情景2)

当您从iframe.php中的链接点击test.php时,会加载iframe.phpindex.php会在<iframe>标记中加载iframe.phpHTTP_REFERER }作为{{1}})。

答案 1 :(得分:0)

不幸的是,没有。 iframe内显示的页面的HTTP_REFERER值始终是包含iframe的父页面。

无论如何,HTTP_REFERER往往有点棘手。如果你可以避免围绕它建立任何重要的逻辑,那么这样做是个好主意。

我认为你正在使用php - 也许你可以使用session来存储test.php加载时访问的最后一页?在test.php上,设置$_SESSION['referringPage'] = 'test.php';。然后在index.php上,您读取$_SESSION['referringPage']的值,无论页面是否在iframe中加载,您都会获得相同的信息。