我刚刚对我的代码进行了一些随机测试,并惊讶地发现 get_browser()
将 Opera 读取为 Google Chrome。
几个月前,get_browser() 在所有 5 个浏览器(chrome、ie、ff、opera、safari)上给了我正确的结果。
今天 Opera 显示了与 Google Chrome 相同的值。首先我认为 get_browser() 一定是问题所在,所以我尝试寻找替代方案。我看到了这个javascript alternative它的工作原理与 get_browser 类似,它也将 Opera 检测为 Google Chrome。
我对此进行了快速搜索,发现 Opera 的文章现在在其桌面浏览器中使用 Chromium。
这就是我的代码为 Opera 和 Google Chrome 提供相同值的原因吗?
我存储用户信息是为了获得更好的用户体验,但当我的用户被告知错误的信息时,情况看起来很糟糕。
关于如何在 Google Chrome 和 Opera 之间保持个性有什么想法吗?
我能想到的就是使用用户代理,但它可以被伪造。
最佳答案
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 和 Chrome 的区别仍然是可能的,因为 Opera 将其版本附加到用户代理,如上所示。
如果您想继续使用 PHP 的 get_browser() 函数,您应该等待 PHP 的后续版本原生实现 Opera 检测。但是,您也可以编写一个函数来完成这项工作。事实上,get_browser() 的工作原理是解码 HTTP 请求 header 的用户代理字段。
关于google-chrome - php get_browser 现在将 Opera 读取为 Google Chrome?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062380/