ケータイの端末ID・ユーザIDの取得についてまとめてみました
ケータイサイトでは、端末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 oneトップ → auお客様サポート → 申し込む/変更する → EZ番号通知設定
参考:
→ au EZfactory ユーザエージェント [au.kddi.com]
ソフトバンク端末での取得方法
1. 端末のシリアルを使う
ソフトバンク端末は、ユーザエージェントに端末ID(シリアル)が付加されています。
ただし、端末側のブラウザ設定メニュー(ソフトバンクのサイト内ではないことに注意)で、製造番号通知のON/OFFを切り替えることができます。
このIDは端末に振られた番号のため、機種変更に伴い変更になります。
例:
SoftBank/1.0/824T/TJ001/SNxxxxxxxxxxxxxxx Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
形式:
SN012345678901234 (SN + 15桁の数字)
2. x-jphone-uidを使う
P型以降の端末では「x-jphone-uid」を使ってユーザIDを取得できます。
こちらは契約ごとのIDのため、機種変更があっても変わりません。
$uid = $_SERVER['HTTP_X_JPHONE_UID'];
形式:
16桁の英数字(大文字・小文字混在)
こちらは、ソフトバンクのメニューからID通知の可否を設定できます。
メニューリスト → MySoftBank → 各種変更手続き → ユーザID通知設定
参考:
→ ソフトバンク Mobile Creation ユーザエージェント一覧 [creation.mb.softbank.jp]
なお、端末IDを利用したログインでは、端末が中古として流通し持ち主が変わった場合でも、ログインできてしまうという問題がありますので、注意が必要になります。
また、PCからアクセスできる環境では、IDの詐称もごく簡単に行えます。
IPアドレスから接続元を検証するなどの対応が必要になることにご注意ください。
この辺りのID取得処理は、「PEAR::Net_UserAgent_Mobile」などのライブラリを使うことで、より簡単に実装可能です。
すっかり長文になってしまったので、サンプルプログラムなどはまた後日掲載したいと思います。
関連:
最近の記事