2

我刚刚对我的代码进行了一些随机测试,并震惊地发现将get_browser()Opera 读取为 Google Chrome。

几个月前,get_browser() 在所有 5 种浏览器(chrome、ie、ff、opera、safari)上都给了我正确的结果。

今天 Opera 显示了与 Google Chrome 相同的值。首先,我认为 get_browser() 一定是问题所在,所以我尝试寻找替代方案。我看到了这个javascript 替代方案,它可以像 get_browser 一样工作,它也将 Opera 检测为 Google Chrome。

我对此进行了快速搜索,发现 Opera 现在使用 Chromium 作为其桌面浏览器的文章。

这就是我的代码赋予 Opera 和 Google Chrome 相同值的原因吗?

我存储用户信息是为了更好的用户体验,当我的用户被告知错误信息时它看起来很糟糕。

关于如何在 Google Chrome 和 Opera 之间保持个性的任何想法?

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

4

1 回答 1

2

Opera 现在使用 Chromium/Blink 作为其基础。为了解决兼容性问题,他们特意使用了 Chrome 的 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 和 Chrome,因为 Opera 将其版本附加到用户代理,如上所示。

如果你想继续使用 PHP 的 get_browser() 函数,你应该等待 PHP 的更高版本,它可以原生地实现对 Opera 的检测。但是,您也可以编写一个函数来完成这项工作。实际上,get_browser() 通过解码 HTTP 请求标头的用户代理字段来工作。

于 2013-08-05T16:19:48.367 回答