刚遇上了个悲剧,公司的 App 内置浏览器的 UserAgent 里面带有 qq 两个字母(因为 App 名称拼音首字母刚好包含 qq ),结果在跳到有赞商城后被认成 QQ 浏览器了,然后就自动跳转到 qq 授权登录的页面去,结果自然是出错登不上了!
我猜测人家是直接判断字符串里存不存在“ QQ ”,因为看了一下连我自己也是这么写的
以 php 为例
function is_qq_browser()
{
$userAgent = app('request')->server->get('HTTP_USER_AGENT');
return (false !== strpos(strtolower($userAgent), 'qq'));
}
瞬间想起了“为什么没有 windows9 ”这个梗(因为说很多软件会把它误人成 Windows98 or 95 这样的)
我想知道大家判断 UserAgent 是不是也是这样判断的,还是用什么其他方式?
1
Miy4mori 2016-11-17 23:49:43 +08:00 via Android
就一字符串能怎么判断,要么正则要么包含,当然也可能是我菜,求大神指导……
|
2
zqhong 2016-11-18 00:23:26 +08:00 via Android 1
http://php.net/manual/zh/function.get-browser.php
试试看这个。 或者试试自己解析 UA ,这是维基百科给出的大部分 UA 的定义: Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions] 也可以参考下,地址是这个: https://zh.m.wikipedia.org/zh-hans/用户代理 |
3
zsx 2016-11-18 00:27:42 +08:00
https://github.com/zsxsoft/php-useragent
现在就随便维护一下的、人肉写规则、直接正则 if/elseif 的库_(:з」∠)_ (什么时候能写成配置文件就好了……) |