携帯からのアクセス振り分け

2008/03/16 | ケータイ

携帯からのアクセスを振り分ける場合、やり方としては大きく分けて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アドレスが公表されているページは以下の通り。

ドコモ
ソフトバンク
AU
Willcom
イーモバイル

しかしまぁ、一番端末が多いドコモのIPアドレスが一番少なくて、一番端末数が少ないWillcomのIPアドレスが一番多いとは・・・(イーモバイルはちょっと例外ということで)。

こちらの難点は、たとえばi-mode simulatorなどのPCで携帯端末の画面表示をチェックするようなツールは使用できなくなることだ。これらのソフトはキャリアの回線を通らないので、当然IPアドレスが上記のようにはならない。

はてさて。どちらがいいのやら。
どうも最近いただいたコメントを読む限り、USER_AGENTをチェックして、キャリア判別だけでなく機種判別まできっちりやる必要があるようなのだが・・・。仕事の重要度と金額によるかな。
何も考えずにPEARの携帯判別ライブラリを使って「後は知りません」といってしまうのが、ある意味いいかもしれない(無責任モード)。

ケータイフォームの文字入力指定

2008/03/14 | ケータイ

フォームの<input type=”text” />タグの入力方法で、PCの場合はスタイルシートを指定することでIMEを無効にすることができる。

style=”ime-mode:disabled;”

しかし携帯では当然のことながら上記の記述ではNGだ。スタイルシートが使えないからだ。しかし拡張属性があって、以下のように記述すれば指定ができる。

○全角(デフォルト)
istyle = 1
mode = hiragana

○半角カナ
istyle = 2
mode = hankakukana

○英字
istyle = 3
mode = alphabet

○数字
istyle = 4
mode = numeric

istyle属性はドコモとAUで、mode属性はソフトバンクで。両方で対応させたい場合は二つの属性を併記しておけばいい。

携帯からのフォーム送信・・・

2008/02/13 | ケータイ

この前「ソフトバンクではフォームの送信が必ずUTFで送られる」みたいな記事を書いた。ものすごく気になっていたので、別途チェック専用のプログラムを書いて再度試してみた。

結果・・・。

嘘を書いていたことが判明しました。失礼しました。

プログラムの内容はたいしたことないが、設定すべき項目は全部書いておいた。

○プログラム中には
mb_language(‘Japanese’);
mb_internal_encoding(‘UTF-8′);
mb_http_input(‘pass’);
mb_http_output(‘SJIS-win’);
ob_start(‘mb_output_handler’);
ini_set(‘default_charset’,’SJIS’);

○.htaccessに
php_flag mbstring.encoding_translation 0

これで、フォーム(SJIS)から文字を送信したらSJISの文字が送られてきた・・・。やっぱそうだよね・・・。

ちなみにmb_internal_encoding(‘UTF-8′)と書くところを’SJIS’として、シフトJISでPHPファイルを書けば・・・というのはNG。たいていの場合PHPはzend multibyteが有効な状態になっていない。本来PHPはシフトJISで記述してはいけない言語だから。

たぶん・・・今でもそのはず。

でもいまだにシフトJISで書く人が後を絶たない。PHPのMLでも「シフトJISはダメ」と喚起する人もほとんどいない。大丈夫になったりしてるのかな?。識者のご意見を求めます。

携帯のフォームのことで

2008/02/08 | ケータイ

最近時々ケータイの仕事をさせていただく機会が出てきた。基本的にコーディングはやらない(サーバサイドのプログラムしか書かない)ので、絵文字関連の処理がなければ、今のところそれほど悩むことはない。

そう思っていたらいくつか入力フォーム関係で、PCの時には遭遇しなかった問題に出くわしたのでメモ。

○submitボタンが押せない
一部の機種で「submitボタンが押せない」とか「フォーム自体が表示されない」とかっていう症状が出た。一部の機種でできないのか、それとも一部の機種のみができたのかはわからないけれど・・・。
どうやら原因はformタグ内でactionを指定していなかったことだった。IEとかだとaction指定がない場合は同一URLにpostなりgetなりしてくれるのだが・・・。プログラムを書く上でめったに省略などしないが、たまたまそういうことをしたらこういう結果に。action属性を指定することで無事解決。

○auだけフォームが表示されない
auだけだめ。フォームの部分がまるまる表示されない。調べてみたところauはかなりシビアなコーディングが必要とのこと。HTML自体はお客さんからいただいたものだったが、tableコーディングされていたものだった。結局table関連タグをすべて削除して、フォームの部分のコーディングをシンプルにしたら無事表示された。

まだまだ修行が足らない、か・・・。

携帯絵文字自動変換

2008/02/05 | ケータイ

携帯キャリア別とPC用に絵文字を相互変換してくれるライブラリを作っている人がいた。すごーい。

http://php-develop.org/MobilePictogramConverter/

でも使い方が・・・と思ったらサンプルもついてた。すごーい。
これは結構有用な気がするので、メモ。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net