链接到与直接键入URL时IE9用户代理字符串不同

时间:2012-07-12 22:26:08

标签: php session internet-explorer-9 user-agent

我有如下代码,通过使用UA的MD5和种子来使会话更安全。

if (!isset($_SESSION['key']))
{
    $_SESSION['key']=md5($_SERVER['HTTP_USER_AGENT'] . $UA_SEED);
    $session_is_valid = TRUE;
}
else if($_SESSION['key'] != md5($_SERVER['HTTP_USER_AGENT'] . $UA_SEED))
{
    $session_is_valid = FALSE;
    exit;
}

代码工作正常,但IE9有自己的议程。通过输入URL直接访问我的网站时,UA将作为

发送
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) 

如果我通过其他网站的链接访问它,则UA将作为

发送
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

这有什么解决方法吗?其他浏览器没有这样的恶作剧。

P.S。我知道这种“安全”的增加形式是有限的,但事情总比没有好。

2 个答案:

答案 0 :(得分:2)

从您的字符串中,一个是MSIE 7.0,另一个是MSIE 9.0。这个blog post表示在IE9及更高版本中,只会使用较短的UA字符串(除非使用F12开发工具进行兼容模式或版本模拟)。

因此,您的问题很可能指向以下其中一项:

  • 您已打开兼容模式。
  • 您在F12开发人员工具中将IE版本设置为7.0。
  • IE的设置搞砸了,有些网站在兼容模式下显示。在这种情况下,您应该将IE的设置重置为默认值。

答案 1 :(得分:0)

您很可能以稍微不同的方式键入URL,这导致IE在您的兼容性视图中呈现的网站列表中找到它。除非您需要兼容性视图,否则您应该从工具>列表中删除您的网站。兼容性查看设置并考虑完全禁用它。