携帯からのアクセス振り分け
携帯からのアクセスを振り分ける場合、やり方としては大きく分けて2つある。
お手軽なのはUSER_AGENT(ブラウザ)をみて振り分ける方法だ。新機種が出るごとに一応チェックの必要はあるのだが、まぁ一般的に使われている方法だ。
if(strstr($_SERVER[‘HTTP_USER_AGENT’],”DoCoMo”)){
//ドコモ
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”Vodafone”)){
//ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”SoftBank”)){
//ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”MOT-“)){
//ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”J-PHONE”)){
//ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”KDDI”)){
//AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”UP.Browser”)){
//AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”WILLCOM”)){
//Willcom
}else{
//PC
}
こんな感じか。ただしPCからのアクセスではブラウザのUSER_AGENTを書き換えてしまうこともできるので、そういう場合はたとえPCからのアクセスであっても携帯とみなされる。
別の方法として、アクセスもとのIPで判別する方法だ。こちらは$_SERVER[‘REMOTE_ADDR’]で判断する。IPアドレスは各キャリアのサイトで公表されているのでそこを参考にするわけだが、変更もあるようなのでこちらも時々チェックする必要があるだろう。IPアドレスが公表されているページは以下の通り。
しかしまぁ、一番端末が多いドコモのIPアドレスが一番少なくて、一番端末数が少ないWillcomのIPアドレスが一番多いとは・・・(イーモバイルはちょっと例外ということで)。
こちらの難点は、たとえばi-mode simulatorなどのPCで携帯端末の画面表示をチェックするようなツールは使用できなくなることだ。これらのソフトはキャリアの回線を通らないので、当然IPアドレスが上記のようにはならない。
はてさて。どちらがいいのやら。
どうも最近いただいたコメントを読む限り、USER_AGENTをチェックして、キャリア判別だけでなく機種判別まできっちりやる必要があるようなのだが・・・。仕事の重要度と金額によるかな。
何も考えずにPEARの携帯判別ライブラリを使って「後は知りません」といってしまうのが、ある意味いいかもしれない(無責任モード)。