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; ...
有什么问题?
我正在使用$ _SERVER ['HTTP_USER_AGENT']来检测用户的浏览器
是的,这就是问题所在.不要那样做.
User-Agent
字符串黑客是一个失败的游戏.有许多奇怪的案例可能会混淆你的脚本.
这是其中之一:IE8,当默认为兼容模式时,假装是IE7.您可以通过存在检测这种情况下,Trident/...
在字符串中,当然像所有的字符串黑客的"解决方案"的这会出问题,如果该字符串正好是目前其他原因,它可能会获得的任何应用程序能够坚持任意字符串到IE浏览器的User-Agent头的结尾,确实考虑到浏览器经常谎称自己是谁,中介可以更改或删除页眉.
此外,通过做浏览器嗅探在服务器端,你正在你的HTTP响应依赖于浏览器来查看,这意味着,代理缓存将成为错误的页面,以错误的浏览器,除非你有正确的Vary
头.但是,如果你这样做,你就破坏了IE中的缓存.
服务器端UA嗅探是一种恐怖,如果真的不可能使用任何其他技术,你应该只使用它作为最后的手段.对于向IE的特定版本显示不同内容的通常情况,使用条件注释会更好.