PHPで携帯の各キャリアとPCの判別、振り分けをする
category : Webプログラミング ;
PHPで、ユーザーエージェントを取得して各キャリアとPCに振り分ける方法。
前に、メモ程度で書いたエントリーのPHPについてを詳しくまとめてみた。
■キャリア、PC判別
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/^DoCoMo/i", $agent)){
echo "あなたは、DoCoMoからアクセスしています。<br />";
echo "ユーザーエージェント:$agent";
}else if(preg_match("/^(J¥-PHONE|Vodafone|MOT¥-[CV]|SoftBank)/i", $agent)){
echo "あなたは、SoftBankからアクセスしています。<br />";
echo "ユーザーエージェント:$agent";
}else if(preg_match("/^KDDI¥-/i", $agent) || preg_match("/UP¥.Browser/i", $agent)){
echo "あなたは、auからアクセスしています。<br />";
echo "ユーザーエージェント:$agent";
}else{
echo "あなたは、PCからアクセスしています。<br />";
echo "ユーザーエージェント:$agent";
}
?>
□ DoCoMo の場合
"DoCoMo" が文字列として含まれているので、これを条件として振り分ける。
□ SoftBank の場合
"J-PHONE"、"Vodafone"、"SoftBank" が文字列として含まれているので、これを条件として振り分ける。Motorolaの702MOと702sMOには、"J-PHONE" や "Vodafone"といった文字列は含まれていないため "MOT-C" と "MOT-V" で判別する。
□ au の場合
WAP2.0 (XHTML)は、「KDDI-」という文字列で振り分けができる。
WAP1.0 (HDML)は、「UP.Browser」という文字列が含まれている場合をauとして振り分ける。しかし、SoftBank(Vodafone)でも、UP.Browserを使っている機種があるので、if文でau よりもSoftBankを先に記述する必要がある。DoCoMoでもUP.Browserを使っている機種があるらしいが、確認できず・・・。
SoftBankでUP.Browserを使っている機種(2007年8月現在)
802N、703SH、703SHf、703N、802SH、902SH、902T、903SH、804SH
□ PC の場合
上記のいずれにも該当しない場合をPCとして振り分ける。
実際は、PC以外にもWILLCOMやゲーム機、PDA、フルブラウザもここに振り分けられることになる。
■各キャリア、PC判別後にページを飛ばす場合(振り分け)
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/^DoCoMo/i", $agent)){
header("Location: http://サイトURL/docomo/index.html");
exit;
}else if(preg_match("/^(J¥-PHONE|Vodafone|MOT¥-[CV]|SoftBank)/i", $agent)){
header("Location: http://サイトURL/softbank/index.html");
exit;
}else if(preg_match("/^KDDI¥-/i", $agent) || preg_match("/UP¥.Browser/i", $agent)){
header("Location: http://サイトURL/au/index.html");
exit;
}else{
header("Location: http://サイトURL/pc/index.html");
exit;
}
?>
これを、アクセスしたときに自動で振り分けたいHTMLのファイル内(拡張子はもちろんphpですが)で、一番上に記述しておけばOK。
■各キャリアのユーザーエージェント情報
DoCoMo ユーザーエージェント情報(公式)
http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/
au ユーザーエージェント情報(公式)
http://www.au.kddi.com/ezfactory/tec/spec/4_4.html
SoftBank ユーザーエージェント情報(公式)
http://developers.softbankmobile.co.jp/dp/tech_svc/info/useragent.php
■参考サイト
Perlで作るCGI講座 - 環境変数 HTTP_USER_AGENT - futomi's CGI Cafe -
http://www.futomi.com/lecture/env_var/http_user_agent.html
ユーザーエージェント携帯判別
http://www.mt312.com/column/004.php
ユーザーエージェント(UA)について
http://mobile.np-os.net/index.php?p=ua

コメント (4)
キャリア振り分けについてですが、通常のTHMLのサイトでは、使えないのでしょうか?
PHPサイトでなければ使えませんか?
初心者で申し訳ありません、教えて下さい。
past: キタザワ | date: 2007年12月13日 21:48
キタザワ様
コメントありがとうございます。
こちらに記載していますのは、PHPでのキャリア振り分けになります。
PHPが使えるサーバで、HTMLファイルの拡張子を.htmlから.phpに変えて頂ければ動きますよ。
また、ご不明な点があればご質問ください。
僕に分かる範囲であれば、お答えいたします。
past: com6 | date: 2007年12月14日 10:59
とても参考になりました。まさに探していたものそのものですよ!!ありがたく使わせていただきます。
自動振り分けを探して入ってきたので、サイトの別ページも今から楽しく見させていただきます。
とても勉強にになりそうです。
past: りょうた | date: 2008年11月19日 00:40
>りょうた様
ありがとうございます。
コメント頂いてから、だいぶ時間が経ってしまい申し訳ありません。
ほとんど自分の備忘録として残していっている情報ですが、
お役に立てたようで僕もうれしいかぎりです。
past: com6 | date: 2008年12月12日 23:25