PHP 浏览器检测 IE > 6

标签 php browser

好吧,我正在处理我公司存储库中的一些代码,我在登录检查中偶然发现了这一点浏览器检测。这几乎是专门搜索 MSIE,如果浏览器版本是 <= 6 则想拒绝登录然而。目前这是一个相当有缺陷的概念。看到该方法采用用户代理字符串并删除除版本号之外的所有内容,但是在这种情况下版本号是一个数字,非常适合版本 1-9 检测。但是对于 Internet Explorer 10,结果是 1,因此打破了逻辑并使其无用。

所以现在我一直在努力让这个逻辑在很大程度上保持不变,但本质上是为了补偿需要 2 位数字的版本,例如 10+

自从我完成任何特定于版本的浏览器检测以来已经有很长一段时间了。所以我希望有人可以帮助我稍微调整一下,或者为我指出一些我可能能够在同一个庄园中使用的更好/更新的功能。

if (isset($_SERVER['HTTP_USER_AGENT'])) {
    $ua = $_SERVER['HTTP_USER_AGENT'];
    if (strstr($ua,'MSIE') && substr($ua,strpos($ua,'MSIE')+5,1) <= 6 ) {
        return $this->renderMessage(
            self::TEXT_LOGIN_FAILED,
            'It seems that your browser is currently unsupported. We apologize for any inconveniences. Please switch to another browser and try again.'
            );
    }
}

以上是我目前正在做的,大家可以看到有点乱,原来做的人没想那么多。我坚持不想打破它,因为我想保持它相似,但如果这有任何意义的话就不会。

最佳答案

这样的事情怎么样:

$ua_array = explode(' ', $_SERVER['HTTP_USER_AGENT']);
$msie_key = array_search('MSIE', $ua_array);
if($msie_key !== false) { // you found MSIE browser
    $msie_version_key = $msie_key + 1;
    $msie_version = intval($ua_array[$msie_version_key]);
    if ($msie_version <= 6) {
        // reject user
    }
}

关于PHP 浏览器检测 IE > 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131392/

相关文章:

php - 导入数据时防止网上商店没有产品

php - codeigniter 内部连接不起作用

php - 如何根据两个表中的id从两个表中选择内容

连接设置时的 SSL 握手

html - 为什么@font-face 在 ie10 中如此困难

browser - 这些回流、绘制、编码、样式重新计算……浏览器概念到底是什么?

php - 在 Imagemagick for linux 中,如何对目录进行批量转换

php - 从 SUM 中删除负结果

html - 是否可以为 CSS 媒体规则指定自定义宽度以强制使用桌面模式?

jquery - 从 JSFiddle 下载 100%,应用程序不显示