PEAR::Net_UserAgent_Mobileを使ってキャリア判別によるリダイレクト
PEAR::Net_UserAgent_Mobileを使ってキャリア判別によるリダイレクト
http://hogehoge.hoge/m
にアクセスすると、DoCoMo, au, SoftBank 端末とそれ以外を判別して、指定したディレクトリ(ページ)にリダイレクト。
PHP の PEAR パッケージのひとつ「Net_UserAgent_Mobile」を利用する。
WebRoot/m に
以下の内容で index.php ファイルを作成する。
<?php // Net_UserAgent_Mobile の読み込み require_once 'Net/UserAgent/Mobile.php'; $retval = mobile_useragent_carrier(); $path = $retval["path"]; if ($path == "i" || $path =="au" || $path == "sb") { // docomo, au, softbank いずれかによるアクセス時のリダイレクト先 // docomo なら /i/index.html、au なら /au/index.html、softbank なら /sb/index.html を表示 header("location: $path/index.html"); } else { // DoCoMo, au, SoftBank 以外(PCとか) // URLを直に指定してもいい header("location: $path/index.html"); } // アクセス端末のキャリア・機種・タイプ名を判別 function mobile_useragent_carrier() { // Net_UserAgent_Mobile をインスタンス化 $agent = Net_UserAgent_Mobile::singleton(); // キャリアチェック // DoCoMo の場合 if ($agent->isDoCoMo()) { $carrier = 'docomo'; // リダイレクトさせるディレクトリ名 $path = "i"; // au の場合 } else if ($agent->isEZweb()){ $carrier = 'au'; // リダイレクトさせるディレクトリ名 $path = "au"; // SoftBank / Vodafone / J-PHONE の場合 } else if ($agent->isSoftBank()) { $carrier = 'softbank'; // リダイレクトさせるディレクトリ名 $path = "sb"; } else { // 携帯電話以外でのアクセス(willcom, emobileもPCと同じ扱い) // リダイレクトさせるディレクトリ名 $path = "pc"; } // 返り値を用意する $output = array(carrier=>$carrier, path=>$path); return $output; } ?>
WebRoot/m の中に i, au, sb, pc の四つのディレクトリを作成する。
この四つの各ディレクトリ内に、対象とするキャリア向けの index.html という名前のファイルを置く。
これで htttp://hogehoge.hoge/m にアクセスすると
ドコモ端末の場合
WebRoot/m/i/index.html を表示
au 端末の場合
WebRoot/m/au/index.html を表示
SoftBank 端末の場合
WebRoot/m/sb/index.html を表示
上記3キャリア以外の場合
WebRoot/m/pc/index.html を表示
php コード内の header(“location: $path/index.html”); の部分(index.html の部分)を変更すれば、任意の名称のページにリダイレクトさせられる。
この場合、willcom や イーモバイルによるアクセスも PC によるアクセスとして処理している。(ドコモ、au、ソフトバンクの主要3キャリア以外は PC として)

Comments
No comments so far.