-1

重複の可能性:
ブラウザのバージョンを確認する

サーバー コードでブラウザの種類を特定したい。

現状では、すべてのブラウザーで一貫してサイトを表示するために、 HTML/CSSのハッキングに多くの時間を費やしています。サイトが異なる (正しくない) レンダリングを行う唯一のブラウザーは IE です。そのため、ページが期待どおりに表示されない理由をユーザーが理解できるように、ユーザーに通知したいと考えています。

この目的のために、私は IE からのリクエストを検出することにのみ関心があるので、別の Web ブラウザーを使用してサイトを表示するのが最適であることを IE ユーザーに知らせることができます。

ブラウザーの種類は、GET 要求の一部として HTTP ヘッダーの 1 つで送信されると思います。私はこれを私のロジックで使用することを考えています。より良い方法はありますか?

コード スニペットは非常に便利です。次の行に沿ったもの:

<?php
 $flag = $_GET(SOME_VARIABLE); // check if it is ANY IE version
?>
4

5 に答える 5

3

$_SERVER['HTTP_USER_AGENT'] を見ることができます:)

于 2012-12-07T12:06:44.393 に答える
2

PHPのget_browser関数はあなたにぴったりのはずです-

get_browser-ユーザーのブラウザが何ができるかを示します

戻り値-情報は、ブラウザのメジャーおよびマイナーバージョン番号やID文字列などを表すさまざまなデータ要素を含むオブジェクトまたは配列で返されます。フレーム、JavaScript、Cookieなどの機能のTRUE/FALSE値。などなど。

$browser = get_browser(null, true);

この関数は、ユーザーのブラウザに関する多くの情報を含む配列を返すことができます

Array
(
    ...
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    ...
)  
于 2012-12-07T12:09:03.503 に答える
1

インターネットにはブラウザ検出機能が満載です

   function detect_ie(){
     if (isset($_SERVER['HTTP_USER_AGENT']) && 
         (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
           return true;
        }else{
           return false;
        }
    }
于 2012-12-07T12:08:14.643 に答える
0

より具体的にしたい場合は、試すことができます。


function getBrowser()
    {
        $u_agent = $_SERVER['HTTP_USER_AGENT'];
        $bname = 'Unknown';
        $platform = 'Unknown';
        $version= "";
        if (preg_match('/linux/i', $u_agent))
        {
            $platform = 'linux';
        }
        elseif (preg_match('/macintosh|mac os x/i', $u_agent))
        {
            $platform = 'mac';
        }
        elseif (preg_match('/windows|win32/i', $u_agent))
        {
            $platform = 'windows';
        }

        if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
        {
            $bname = 'Internet Explorer';
            $ub = "MSIE";
        }
        elseif(preg_match('/Firefox/i',$u_agent))
        {
            $bname = 'Mozilla Firefox';
            $ub = "Firefox";
        }
        elseif(preg_match('/Chrome/i',$u_agent))
        {
            $bname = 'Google Chrome';
            $ub = "Chrome";
        }
        elseif(preg_match('/Safari/i',$u_agent))
        {
            $bname = 'Apple Safari';
            $ub = "Safari";
        }
        elseif(preg_match('/Opera/i',$u_agent))
        {
            $bname = 'Opera';
            $ub = "Opera";
        }
        elseif(preg_match('/Netscape/i',$u_agent))
        {
            $bname = 'Netscape';
            $ub = "Netscape";
        }

        $known = array('Version', $ub, 'other');
        $pattern = '#(?' . join('|', $known) .')[/ ]+(?[0-9.|a-zA-Z.]*)#';
        if (!preg_match_all($pattern, $u_agent, $matches))
        {

        }
        $i = count($matches['browser']);
        if ($i != 1)
        {
            if (strripos($u_agent,"Version")  $u_agent,
            'name'      => $bname,
            'version'   => $version,
            'platform'  => $platform,
            'pattern'    => $pattern
        );
    }

于 2012-12-07T12:38:54.040 に答える
0

これでうまくいきますが、 JavaScriptを使用してクライアント側でも実行する必要があります。

于 2012-12-07T12:48:01.453 に答える