PHP浏览器检测IE> 6

时间:2012-10-29 23:59:45

标签: 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.'
            );
    }
}

以上是我目前正在使用的内容,因为你可以看到它有点凌乱,最初制作它的人并没有想到远远不够。我坚持不想打破它,因为我想保持它相似但不是没有任何意义。

1 个答案:

答案 0 :(得分:3)

这样的事情怎么样:

$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
    }
}