3

さて、私は会社のレポでいくつかのコードに取り組んでおり、ログインチェックでこのブラウザ検出のビットに出くわしました。それはほとんどMSIEを具体的に検索し、ブラウザのバージョンがそうである場合はログインを拒否したいと考えています<= 6。これは現時点ではかなり欠陥のある概念です。このメソッドはユーザー エージェント文字列を取得し、バージョン番号以外のすべてを削除しますが、この場合のバージョン番号は 1 桁であり、バージョン 1 ~ 9 の検出に最適です。しかし、Internet Explorer 10 では結果が 1 になり、ロジックが壊れて役に立たなくなります。

そのため、現在、このロジックをほとんど同じに保とうとしているのですが、本質的には、10+ などの 2 桁を必要とするバージョンを補っています。

バージョン固有のブラウザ検出を行ってから長い時間が経ちました。だから、誰かが私がこれを少し調整するのを手伝ってくれるか、同じ邸宅で使用できるかもしれないより良い/新しい機能を教えてくれることを願っています.

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

上記は私が現在取り組んでいるものです。少し乱雑であることがわかりますが、最初に作成した人はあまり考えていませんでした。そして、私はそれを壊したくなくて立ち往生しています.

4

1 に答える 1

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
    }
}
于 2012-10-30T00:08:00.483 に答える