PHPでアクセスされたブラウザ名を判別する方法 †
PHPスクリプトでアクセスされたブラウザを判別するサンプルコードを以下に記します。
スポンサーリンク
ブラウザを判別するには!? †
ブラウザ名を取得するにはヘッダーに含まれるHTTP_USER_AGENTを取得し判別します。
実際に$_SERVER変数の内容を確認してみます。
準備したPHPサンプルスクリプトは以下の通りです。
agent1.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)
上記の出力を見ると以下のようにブラウザ判別ができることが確認できます。
判別文字列 | ブラウザ |
Chrome | Google Chrome |
Firefox | Firefox |
MSIE | Internet Explorer |
他のブラウザも同様に確認してみれば良いと思います。
ブラウザ判別のサンプルスクリプト †
新聞部さんからのサンプルコード提供です。(感謝!!)
以下にブラウザ判別のサンプルスクリプトを記します。
上記では、$_SERVER['HTTP_USER_AGENT']でブラウザのエージェント名を取得していましたが、
以下のサンプルスクリプトでは同様の動作をするgetenv関数を使用してみることにします。
現在非推奨となってるereg関数を使用せず、preg_matchに訂正したサンプルコードを以下に記します。
agent2.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関数では、正規表現の記述のあたりのこともあるので忘れないようにしましょう。
スポンサーリンク