php get_browser现在正在阅读Opera作为Google Chrome?

时间:2013-08-05 15:50:26

标签: google-chrome browser opera browser-detection

我刚刚对我的代码进行了一些随机测试,并惊讶地发现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之间保持个性的任何想法?

我能想到的只是使用用户代理,但它可能是伪造的。

1 个答案:

答案 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字段来工作。