ケータイの端末ID・ユーザIDの取得についてまとめてみました(サンプルプログラム編)

2008/9/9 火曜日 Posted in au, DoCoMo, PHP, SoftBank | No Comments »

昨日の記事に続き、本日も端末ID・ユーザIDの話です。 各種IDの基本的な取得の方法は、昨日すでにご紹介したので、より具体的なプログラムのサンプルをご紹介したいと思います。 IDの取得には、「PEAR::Net_UserAgent_Mobile」を使うのが簡単でオススメです。 → PEAR Net_UserAgent_Mobile [pear.php.net]   まずはインストール方法からです。 ・Windowsの場合: > c:\php\pear install -f Net_UserAgent_Mobile ※「c:\phpはPHPをインストールした場所に合わせて適宜読み替えてください」 ※「-f」オプションはベータ版のためインストールできないというエラーを回避するためのものです。 ・Linux環境の場合: # pear install -f Net_UserAgent_Mobile レンタルサーバなどでインストールが出来ない場合は、上記本家サイトの「Download」からパッケージをダウンロードし、 「Net/UserAgent/Mobile.php」 「Net/UserAgent/Mobile/」 となるように設置しても動作します。(PEAR本体がインストールされてない場合はそちらのインストールも必要になります)   さて、インストールが完了したらプログラムを設置します。 サンプルプログラムは次の通りです。 // PEAR::Net_UserAgent_Mobileの読み込み require_once('Net/UserAgent/Mobile.php'); // インスタンスの作成 $agent = Net_UserAgent_Mobile::factory(); は、既に実行済みと仮定します。 ドコモの場合 // 端末製造番号 $ser_no = $agent->getSerialNumber(); // FOMAカード製造番号 $card_no = $agent->getCardID(); // iモードIDを取得 $imode_id = $agent->getUID(); 端末製造番号とFOMAカード製造番号は「utn認証」を、iモードIDは「guid=ON」を付けないと、値が取得できないことに注意してください。 (詳しくは昨日の記事を参照してください)   auの場合 // EZ番号(サブスクライバID)を取得 $ez_no = $agent->getUID();   ソフトバンクの場合 // 端末シリアル番号を取得 $ser_no = $agent->getSerialNumber(); // x-jphone-uidを取得 $j_uid ... Read more..

ケータイの端末ID・ユーザIDの取得についてまとめてみました

2008/9/8 月曜日 Posted in au, DoCoMo, PHP, SoftBank | 12 Comments »

ケータイサイトでは、端末ID・ユーザIDを取得する、という処理をよく行うことがあります。 ログインの度に、ユーザ名とパスワードを入力するというのは、ケータイの操作性の面からも現実的ではないためです。 今回はそんな各種IDの取得方法について、PHPを使った場合を例にとりまとめてみました。 ※ここでは端末IDを「ケータイに振られた個体識別情報(製造番号など)」、ユーザIDを「契約に紐付くID」として解説しています。   ドコモ端末での取得方法 1. utnを使う ドコモ端末ではutn属性を使うことによって、フォームやリンクから個体識別情報を取得することができます。 対応機種は、iモード対応HTML 3.0以降の機種(但しSO210i,SH251i,SH251iSを除く)で、現在使われているほとんどの端末に対応していると言ってよいでしょう。 <form action="sample.php" method="post" utn> <input type="submit" name="submit"> </form> <a href="sample.php" utn> utnを使う場合、ケータイ端末側では、「携帯電話情報を送信しますか?」といった確認のダイアログが表示されます。 utn使用時に表示されるダイアログ 送信された端末IDは、ユーザエージェントから取得できます。 $agent = $_SERVER['HTTP_USER_AGENT']; 取得できるフォーマットの例は次の通りです。 FOMA DoCoMo/2.0 P902i(c100;TB;W24H12;serXXXXXXXXXXXXXXX;iccxxxxxxxxxxxxxxxxxxxx) ・FOMA端末製造番号フォーマット  → serXXXXXXXXXXXXXXX (ser + 15桁の英数字) ・FOMAカード個体識別子  → iccxxxxxxxxxxxxxxxxxxxx (icc + 20桁の英数字) mova DoCoMo/1.0/P504i/c10/TB/ser*********** ・製造番号  → ser*********** (ser + 11桁の英数字) FOMA端末製造番号と製造番号は、ケータイ端末にふられた(機種変更で変わる)番号であることに注意してください。 参考: → NTT docomo iモード対応HTMLタグ一覧 utn属性 [nttdocomo.co.jp]   2. iモードIDを使う iモードIDは2008年3月31日から提供された、ドコモの新しいユーザ識別方法です。 契約ユーザごとに一意となる番号のため、機種変更があってもiモードIDは変わりません。 全てのiモード端末で利用でき、utnのように確認用のダイアログがでないことも特徴です。 URLに「guid=ON」というパラメータを付けると、拡張ヘッダにiモードIDが付く、という仕様です。 サーバ側からは次のように取得できます。 $imode_id = $_SERVER['HTTP_X_DCMGUID']; ただし、この機能を利用するには、次のメニューから利用者が通知を許可している必要があります。(デフォルトは通知するとなっています) iモードメニュー → お客様サポート → 各種設定 → iモードID通知設定 また仕様上、SSL通信時は利用できないことに注意してください。 参考: → ke-tai.org 本日提供が開始された「iモードID」機能を早速試してみました [ke-tai.org] → NTT docomo iモードセンタの各種情報 iモードIDについて [nttdocomo.co.jp]   他にも公式サイトで使われるNULLGWDOCOMO [itpro.nikkeibp.co.jp]方式もありますが、禁則事項に触れるのであまり詳しくは書けません。 公式サイト以外のいわゆる勝手サイトからは利用できないため、一般の開発者にはあまり関係がないでしょう。   au端末での取得方法 EZwebの場合はごくシンプルで、EZ番号(旧称サブスクライバID)を利用します。 こちらは契約ごとに振られる番号のため、機種変更があっても変わりません。 取得方法は次の通りです。 $ez_no = $_SERVER['HTTP_X_UP_SUBNO']; EZ番号の形式: 01234567890123_xx.ezweb.ne.jp ([14桁の数値]_[2桁の英字].ezweb.ne.jp) こちらもユーザ側で通知設定の可否を設定することができます。 au ... Read more..