使用PHP检测IE浏览器版本

vov*_*man 3 php browser internet-explorer-8 internet-explorer-7

我正在使用$ _SERVER ['HTTP_USER_AGENT']来检测用户的浏览器.当我在IE8上的localhost上运行var_dump时,它返回:... compatible; MSIE 8.0; ...但是当我将它上传到我的主人(godaddy)时,我得到:......兼容; MSIE 7.0; ...

有什么问题?

bob*_*nce 9

我正在使用$ _SERVER ['HTTP_USER_AGENT']来检测用户的浏览器

是的,这就是问题所在.不要那样做.

User-Agent字符串黑客是一个失败的游戏.有许多奇怪的案例可能会混淆你的脚本.

这是其中之一:IE8,当默认为兼容模式时,假装是IE7.您可以通过存在检测这种情况下,Trident/...在字符串中,当然像所有的字符串黑客的"解决方案"的这会出问题,如果该字符串正好是目前其他原因,它可能会获得的任何应用程序能够坚持任意字符串到IE浏览器的User-Agent头的结尾,确实考虑到浏览器经常谎称自己是谁,中介可以更改或删除页眉.

此外,通过做浏览器嗅探在服务器端,你正在你的HTTP响应依赖于浏览器来查看,这意味着,代理缓存将成为错误的页面,以错误的浏览器,除非你有正确的Vary头.但是,如果你这样做,你就破坏了IE中的缓存.

服务器端UA嗅探是一种恐怖,如果真的不可能使用任何其他技术,你应该只使用它作为最后的手段.对于向IE的特定版本显示不同内容的通常情况,使用条件注释会更好.