IE8和HTTP_REFERER

时间:2010-08-22 10:07:50

标签: php browser internet-explorer-8

我想仅允许从给定页面访问某个页面(用户必须输入密码)。禁止直接在浏览器的URL字段中输入URL 我写了以下代码:

<?php
// only allow access through front door
$from = getenv("HTTP_REFERER");
if ($from != "http://www.mysite.net/password.php")
    include("http://www.mysite.net/secret_nok_tgpxFC6phBRLw1Wh.php");
else
    include("http://www.mysite.net/secret_ok_tgpxFC6phBRLw1Wh.php");
?>

这在Firefox中运行良好,但即使在URL字段中输入URL,IE8也会打开页面。我该如何解决这个问题?而且,我的做法是错误的吗? TIA
史蒂文

修改
从我到目前为止的回复中我明白,正确的方法是使用(基于cookie)会话。谁能推荐我一个关于这个主题的好教程? (虽然php.net包含一些示例,但它是参考,而不是教程)

3 个答案:

答案 0 :(得分:0)

检查引用者不是最好的想法。一些代理可能会删除它。使用cookie-bases session会更加“文明”。

答案 1 :(得分:0)

您需要使用Wireshark或Fiddler来检查Internet Explorer正在发送的HTTP标头。一旦你有了这个,就可以通过PHP验证来寻找可行的解决方案。

也就是说,你可能会对超级全球$_SERVER["HTTP_REFERER"]

有更好的运气

答案 2 :(得分:0)

使用会话检查是否允许用户进入受保护区域。众所周知,IE不会发送HTTP_REFERER标头,而是打开了一些安全选项。它适用于IE6,但现在大部分时间都关闭了。