
携帯サイトを構築するにあたり、絵文字を全く使用しない場合は問題ありませんが、絵文字や画像を使いコンテンツを閲覧させたい場合端末ごとに表示する内容やページを振り分ける必要があります。
特に、i-mode端末はFOMA902シリーズからはテーブルや背景画像に対応しましたがそれ以前の端末ではほんの一部のCSSに対応しているのみで、注意が必要です。
ここでは、各キャリアごとの振り分け方法について書いてみます。
環境変数HTTP_USER_AGENTの値は訪問者側で変更することが可能な為、必ずそのキャリアの端末か確認するにはリモートホストやIPアドレスを利用した方が良いでしょう。
IPアドレスからリモートホストを逆引きできない場合などもあるようなので携帯電話キャリアの公開しているIPアドレス帯域内であるかを確認する方法が望ましいと思います。携帯振り分け君IIもご覧下さい。
各キャリアのページに使用されるIPアドレス帯についての情報が載っている為、.htaccessを使って簡単に制御することも出来ます。
WILLCOMの端末はHOSTで判別するのは難しい。
面倒なのでうちではUSER_AGENTのみで振り分けています。
(.htaccessを使うことでセンター経由のアクセスのみ振り分けることも出来ます。)
<?php
if(strstr($_SERVER['HTTP_USER_AGENT'],"DoCoMo")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"Vodafone")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"SoftBank")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"MOT-")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"J-PHONE")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"KDDI")){
$env = 'ez';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"UP.Browser")){
$env = 'i';
}elseif(strstr($_SERVER['HTTP_USER_AGENT'],"WILLCOM")){
$env = 'ez';
}else{
$env = 'pc';
}
?>
上から順番に評価されるのでUP.Browserより上にKDDIやJ-PHONEなどを持ってきています。*1
正規表現(ereg,preg_matchなど)を使って書くことも出来ますがうちでは全てのアクセスに対して
前述の判別を行っているので負荷の軽い正規表現を使わない方法に変更しました。