このエントリーをはてなブックマークに追加


PHPでアクセスされたブラウザ名を判別する方法

PHPスクリプトでアクセスされたブラウザを判別するサンプルコードを以下に記します。


スポンサーリンク

ブラウザを判別するには!?

ブラウザ名を取得するにはヘッダーに含まれるHTTP_USER_AGENTを取得し判別します。 実際に$_SERVER変数の内容を確認してみます。
準備したPHPサンプルスクリプトは以下の通りです。

fileagent1.php (改行コードLF)

<?php
 print($_SERVER['HTTP_USER_AGENT']);
?>
  • Google Chrome でアクセスした時
    Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
    返却されたHTTP_USER_AGENT文字列内にSafariがあるので判別する順序に注意する必要がありますね。
  • Firefoxでアクセスした時
    Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0
  • Internet Explorerでアクセスした時
    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB7.5; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CMDTDF; BRI/2) 

上記の出力を見ると以下のようにブラウザ判別ができることが確認できます。

判別文字列ブラウザ
ChromeGoogle Chrome
FirefoxFirefox
MSIEInternet Explorer

他のブラウザも同様に確認してみれば良いと思います。

ブラウザ判別のサンプルスクリプト

新聞部さんからのサンプルコード提供です。(感謝!!)

以下にブラウザ判別のサンプルスクリプトを記します。
上記では、$_SERVER['HTTP_USER_AGENT']でブラウザのエージェント名を取得していましたが、
以下のサンプルスクリプトでは同様の動作をするgetenv関数を使用してみることにします。
現在非推奨となってるereg関数を使用せず、preg_matchに訂正したサンプルコードを以下に記します。

fileagent2.php (改行コードLF)

<?php
$ua = getenv('HTTP_USER_AGENT');
if (preg_match("/Chrome/", $ua)) {
    print("Google Chrome");
} elseif (preg_match("/Firefox/", $ua)) {
    print("Firefox");
} elseif (preg_match("/MSIE/", $ua)) {
    print("Microsoft Internet Explorer");
} else {
    print("Unknown");
}

以上、PHPスクリプトによるブラウザ判別のサンプルスクリプトでした。
但し、preg_match関数では、正規表現の記述のあたりのこともあるので忘れないようにしましょう。


スポンサーリンク

添付ファイル: fileagent1.php 263件 [詳細] fileagent2.php 243件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-06-22 (月) 19:38:54 (1213d)