我在 PHP 中有一个 Web 应用程序,它在前端需要一些更现代的浏览器功能,例如MutationObserver。如网站所述,只有非常新的浏览器支持此功能。我需要依赖的一些 HTML5 功能也是如此。
我现在想要实现的是使用 UserAgent-String 检查服务器端用户正在运行哪个浏览器,如果它低于特定版本,将他重定向到一个信息页面,通知他应该使用较新的浏览器。
我现在一直在尝试设置适当的正则表达式来检查 UA 字符串。但是,我有点卡住了,因为浏览器制造商并不总是保持干净的架构 - 例如,对于 Opera-Browser,我需要最低版本 12。
- Opera 12.14 示例 1: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 版本/12.14
- Opera 12.14 示例 2: Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14
这也可能是 Firefox 4.0。 - Opera 11.51: Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;de) Opera 11.51
这也可能是 Internet Explorer 9.0。
跟踪相同的浏览器和版本也很棘手,如 Opera 12.14 的两个示例所示:它是“Version/12.14”或“Opera 12.14”或其他一些漂亮的“随机”字符串。对于其他浏览器,问题非常相似。
所以问题是:你将如何进行?
方法 1:
useragentstring.com 有一个 API,每次用户访问欢迎页面和/或登录时我都可以查询它。我不确定这在安全性和应用程序性能方面是否是个好主意。
方法2:
PHP 的get_browser() 函数结合browscap.ini。此方法无法区分桌面浏览器和移动浏览器。
方法 3:
方法 2 的替代方案可能是phpbrowscap,您可以在其中定义自己的 browsercap.ini,而无需依赖服务器上您无权访问的某处的 browscap.ini。
还是有什么其他方法?
我很乐意发表一些评论。