我刚刚对我的代码进行了一些随机测试,并惊讶地发现get_browser()
将Opera视为Google Chrome。
几个月前,get_browser()在所有5个浏览器(chrome,即ff,opera,safari)上给了我正确的结果。
今天,Opera与谷歌浏览器显示相同的值。首先我认为get_browser()必须是问题,所以我尝试了替代方案。我看到这个javascript alternative有效,但是像get_browser一样,它也检测到Opera为Google Chrome。
我对此进行了快速搜索,并发现Opera的文章现在使用Chromium作为其桌面浏览器。
这就是我的代码为Opera和Google Chrome提供相同价值的原因吗?
我存储用户信息以获得更好的用户体验,当我的用户被告知错误信息时,它看起来很糟糕。
关于如何在Google Chrome和Opera之间保持个性的任何想法?
我能想到的只是使用用户代理,但它可能是伪造的。
答案 0 :(得分:2)
Opera现在使用Chromium / Blink作为基础。为了解决兼容性问题,他们故意use Chrome's user-agent。下面是Opera提供的UA字符串示例:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100
然而,正如上面所见,Opera将其版本附加到用户代理,仍然可以区分Opera和Chrome。
如果你想继续使用PHP的get_browser()函数,你应该等待以后发布的PHP本身实现Opera的检测。但是,您也可以编写一个函数来完成这项工作。实际上,get_browser()通过解码HTTP请求标头的user-agent字段来工作。