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 として)

 

Tags: ,

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name
     
     
     

    コメントリンクを nofollow free に設定することも出来ます。