個体識別情報・UIDの取得方法
- Docomo ドコモ
- au ezWeb
- Softbank(ソフトバンク)/Disney
- Emobile(イーモバイル)
- MySQLなどの注意点
- SESSIONは不要
- [参考記事] 個体識別番号通知の設定URL
Docomo ドコモ utn
[HTTP_USER_AGENT] => DoCoMo/2.0 N999i(c100;TB;W24H16;ser【11または15桁の数字】;icc【19桁の数字】F)
Docomoの公式サイト(iメニューサイト)ではない、非公式サイト(勝手サイト)ではリンクやフォームに『 utn 』と付けることで、 USER AGENTに個体識別情報が付与されます。
<a href="sample.html" utn>テキスト</a> <form method="post" utn> ……… </form>
serの後の数字 | 個体識別情報(端末ID)です。 movaは11桁、FOMAは15桁 |
---|---|
iccの後の数字 | FOMAカード製造番号 |
この番号は携帯電話で *#06# と打つと表示されます。
接続時に必ず次のようなメッセージが出ます。
携帯電話/FOMAカード(UIM)の製造番号を送信します。(はい/いいえ/戻る)
この番号は携帯電話で *#06# と打つと表示されます。
PHPでページ内のAタグ、FORMタグに『 utn 』を付ける方法
外部リンクなどがあるので、絶対パスには付きません。ページ内リンクにも不要なので付きません。mailto、tel、fax、newsも付けません。
<?php /* ================================ * relativeOabsolutePathUtn * * @create 2009-01-12 * @author pentan * @url http://pentan.info/ * * Copyright (c) 2009 pentan.info All Rights Reserved. * 著作権表示部分の変更削除は禁止です * ================================ */ function relativeOabsolutePathUtn($str,$tag){ $str=stripslashes($str); if(strtolower($tag)=="a"){ if(preg_match("/href=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/href=/i",$str)){ return $str." utn".">"; }else{ return $str.">"; } }else{ if(preg_match("/action=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/action=/i",$str)){ return $str." utn".">"; }else{ return $str.">"; } } } $body=preg_replace("/<(a|form) ([^>]+)>/ie", "'<$1 '.relativeOabsolutePathUtn('$2','$1')",$body); ?>
このようにしておくと、非公式サイトから公式サイトへの切り替えが楽になります。
Docomo ドコモ iモードID(guid)
2008年3月31日からiモードIDと呼ばれるIDを取得できるようになりました。
iモードIDは、英数字の7桁で大文字・小文字の区別あり。
SSL通信時(https)では、iモードIDを取得できない。
『iモードID』の提供開始について
iモードIDについて
以下のように引数に guid=on を入れます。
<a href="http://example.com/test.php?guid=on">テキスト</a> <form action="./sample?guid=on" method="post"> <input type="submit" value="送信"> </form>
FORMの場合、POSTでは下記のようなHIDDENでは取得ができない。
<input type="hidden" name="guid" value="on">
POSTの場合はGETクエリに guid=on を付け、GETの場合にはHIDDENで
<input type="hidden" name="guid" value="on">
を指定します。
HTTPヘッダ(拡張ヘッダ)X-DCMGUID から取得します。
PHPの場合
$_SERVER['HTTP_X_DCMGUID']
Perlの場合
$ENV{'HTTP_X_DCMGUID'}
Javaの場合
request.getHeader("x-dcmguid")
PHPでページ内のAタグ、FORMタグに『 guid=on 』を付ける方法
外部リンクなどがあるので、絶対パスには付きません。ページ内リンクにも不要なので付きません。mailto、tel、fax、newsも付けません。
<?php /* ================================ * relativeOabsolutePathGuid * * @create 2009-01-12 * @author pentan * @url http://pentan.info/ * * Copyright (c) 2009 pentan.info All Rights Reserved. * 著作権表示部分の変更削除は禁止です * ================================ */ function relativeOabsolutePathGuid($str,$tag){ $str=stripslashes($str); if(strtolower($tag)=="a"){ if(preg_match("/href=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"([^¥"]+)¥"/i",$str,$match)){ if(preg_match("/¥?$/i",$match[1]) || preg_match("/&$/i",$match[1])){ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1guid=on¥"".">",$str); }elseif(preg_match("/¥?/i",$match[1])){ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1&guid=on¥"".">",$str); }else{ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1?guid=on¥"".">",$str); } }else{ return $str.">"; } }else{ if(preg_match("/action=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"([^¥"]+)¥"/i",$str,$match)){ if(preg_match("/¥?$/i",$match[1]) || preg_match("/&$/i",$match[1])){ return preg_replace("/action=¥"([^¥"]+)¥"/i", "action=¥"$1guid=on¥"".">",$str); }elseif(preg_match("/¥?/i",$match[1])){ return preg_replace("/action=¥"([^¥"]+)¥"/i", "action=¥"$1&guid=on¥"".">",$str); }else{ return preg_replace("/action=¥"([^¥"]+)¥"/i", "action=¥"$1?guid=on¥"".">",$str); } }else{ return $str.">"; } } } $body=preg_replace("/<(a|form) ([^>]+)>/ie", "'<$1 '.relativeOabsolutePathGuid('$2','$1')",$body); ?>
このようにしておくと、非公式サイトから公式サイトへの切り替えが楽になります。
Docomo ドコモ 公式コンテンツ(iメニューサイト)
NULLGWDOCOMOで取得できます。
<a href="test.php?uid=NULLGWDOCOMO"></a> <form method="post"> <input type="hidden" name="uid" value="NULLGWDOCOMO" /> ……… </form>
上記のようにすることで、ユーザーIDが取得できます。
これはTSUTAYAメールなどで見ることができる。
PHPでページ内のAタグ、FORMタグに『 uid=NULLGWDOCOMO 』を付ける方法
外部リンクなどがあるので、絶対パスには付きません。ページ内リンクにも不要なので付きません。mailto、tel、fax、newsも付けません。
<?php /* ================================ * relativeOabsolutePathNULLGW * * @create 2009-01-12 * @author pentan * @url http://pentan.info/ * * Copyright (c) 2009 pentan.info All Rights Reserved. * 著作権表示部分の変更削除は禁止です * ================================ */ function relativeOabsolutePathNULLGW($str,$tag){ $str=stripslashes($str); if(strtolower($tag)=="a"){ if(preg_match("/href=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/href=¥"([^¥"]+)¥"/i",$str,$match)){ if(preg_match("/¥?$/i",$match[1]) || preg_match("/&$/i",$match[1])){ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1uid=NULLGWDOCOMO¥"".">",$str); }elseif(preg_match("/¥?/i",$match[1])){ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1&uid=NULLGWDOCOMO¥"".">",$str); }else{ return preg_replace("/href=¥"([^¥"]+)¥"/i", "href=¥"$1?uid=NULLGWDOCOMO¥"".">",$str); } }else{ return $str.">"; } }else{ if(preg_match("/action=¥"(https?|ftp):¥/¥//i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"#/i",$str)){ return $str.">"; }elseif(preg_match("/action=¥"(mailto|tel|fax|news):/i",$str)){ return $str.">"; }elseif(preg_match("/action=/i",$str)){ return $str."><input type=¥"hidden¥" name=¥"uid¥" value=¥"NULLGWDOCOMO¥" />"; }else{ return $str.">"; } } } $body=preg_replace("/<(a|form) ([^>]+)>/ie", "'<$1 '.relativeOabsolutePathNULLGW('$2','$1')",$body); ?>
このようにしておくと、公式サイトから非公式サイトへの切り替えが楽になります。
au ezWeb
EZ番号(サブスクライバID)と呼ばれる番号が利用できます。
HTTPヘッダ(拡張ヘッダ) X-UP-SUBNO から取得します。
PHPの場合
$_SERVER['HTTP_X_UP_SUBNO']
Perlの場合
$ENV{'HTTP_X_UP_SUBNO'}
Javaの場合
request.getHeader("x-up-subno")
【数字14桁】_【英文字2文字】.ezweb.ne.jp という形式のIDが得られます。
例:12345678901234_ab.ezweb.ne.jp
公式サイトと非公式サイトの両方で利用されています。
この番号は携帯電話のメニューのEZ番号(サブスクライバID)という項目に書いてあります。
サブスクライバIDと地域
EZ番号の先頭4桁から契約した地域がわかるといわれています。
先頭4桁 | 地域 |
---|---|
0500 | au関東/中部 |
0700 | au関西 |
0701 | au九州 |
0702 | au中国 |
0703 | au東北 |
0704 | au北陸 |
0705 | au北海道 |
0706 | au四国 |
0707 | au沖縄 |
0800 | TU-KA東京 |
0801 | TU-KA関西 |
0802 | TU-KA東海 |
Softbank(ソフトバンク)/Disney
[HTTP_USER_AGENT] => SoftBank/1.0/000SH/SHJ001/SN【11または15桁の数字】
USER AGENTの中にあるSNの後の数字が個体識別情報です。
P型は11桁、それ以降は15桁。
非公式サイトで利用されています。
この番号は携帯電話で *#06# と打つと表示されます。
これは携帯端末から出力される情報です。
IPアドレスでの制限と併用してもこの番号は技術的に偽装ができます。(自由な値を送ることが可能です)
このため、この番号を認証に使用してはいけません。
[HTTP_X_JPHONE_UID] => 【大文字小文字の英数字16文字】
Softbankには、X_JPHONE_UIDというものもあります。
HTTPヘッダ(拡張ヘッダ)X-JPHONE-UID から取得します。
X-JPHONE-UIDは、昔は公式サイトでしか取得できませんでしたが、現在は非公式サイトでも取得できます。
ただし、古い機種では取得できません。
ネットワーク側で送信される情報のため、ソフトバンクの携帯用IPアドレスを使用している限りでは偽装はできないようです。
PHPの場合
$_SERVER['HTTP_X_JPHONE_UID']
Perlの場合
$ENV{'HTTP_X_JPHONE_UID'}
Javaの場合
request.getHeader("x-jphone-uid")
iPhoneの通常の設定では、どちらも取得できません。
X_JPHONE_UIDと地域
UIDの先頭1桁から契約した地域がわかるといわれています。
エリア | P型/W型/3GC型 | C型 |
---|---|---|
関東・甲信 | a | 1 |
東海 | b | 2 |
関西 | c | 3 |
中国 | d | 4 |
四国 | e | 5 |
九州・沖縄 | f | 6 |
東北・新潟 | g | 7 |
北海道 | h | 8 |
北陸 | i | 9 |
この地域分類は、家族割でかつ同時期に新規契約した場合は主契約の契約地となることがあるようです。
つまり主契約の契約者が関東だったとすると、子契約が関西でも a から始まり、関東のUIDとなってしまうみたいです。
実例あり
Emobile(イーモバイル)
[HTTP_X_EM_REGION] => 【5桁の数字】 [HTTP_X_EM_UID] => u【17桁の数字】
X_EM_UIDで、個体識別情報が利用できます。
HTTPヘッダ(拡張ヘッダ)X_EM_UID から取得します。
PHPの場合
$_SERVER['HTTP_X_EM_UID']
Perlの場合
$ENV{'HTTP_X_EM_UID'}
Javaの場合
request.getHeader("x-em-uid")
MySQLなどの注意点
個体識別情報やユーザーIDは、大文字小文字の英文字が混在する場合があります。
MySQLを利用しているときは、このカラムをutf8_general_ciなどにしていると、正しく判別できません。
(utf8_general_ciやutf8_unicode_ciは大文字小文字を区別しません。)
例:aaaaaで探しても、AAAAAがヒットすることがあります。
このカラムは個人情報にも関わるので、utf8_binなどにしておいたほうがいいです。
PHPなどでセッションは使う必要がありません。
個体識別情報が使えるなら、GETクエリなどでセッションIDを引き回す必要はありません。
PHPならsession_start()の前に、session_id($uid)などとすることで、セッションIDをURLなどで送らなくても、内部的にセッションは使えます。
実際にはセッションID名は『 aからz、AからZ、0から9および「-(ハイフン)」』という規則があるので、これに合わせてユーザーIDを整形する必要があります。
PHPのセッションについて
関連記事
- 電話機の数字ボタンの右下にある「#」は、シャープではありません
- 個体識別番号通知の設定URL
- ドメイン指定受信設定のURL
- Googleなどのサーチエンジンに携帯版サイトを認識させる方法
- Net_UserAgent_Mobile 携帯判別PEARパッケージの使い方と注意点
- ユーザーエージェントからのキャリア、世代判別
- 携帯用クローラーのIPアドレスとユーザーエージェント
- 携帯電話番号の割り振り表 電話番号からキャリア・地域がわかります
- すべての端末で画像表示を同じにする方法
- FireMobileSimulator パソコンで携帯サイトを検証する
- 携帯サイトのmailtoを端末ごとに書き換える関数
- 携帯電話番号の変遷
- 携帯サイトでのmailtoの使い方
- mailto本文での改行 ドコモのN、Pで送信に失敗します
- PCからデコメールを送るときの仕様
- <docomo>タグ、<au>タグ、<softbank>タグの使用例
- キャリア・クローラーのIP・ユーザーエージェント一覧
- 役に立つかもしれないリンク集
- 裏コマンド(スペシャルモード)
- バッテリーの製造番号 製造の年月がわかります
- 位置情報・GPS情報の取得方法
- 携帯ドメイン一覧 携帯電話キャリア PHSキャリア
- 絵文字一覧 Softbankモバイル(Yahoo!ケータイ)
- 絵文字一覧 Docomo(iモード)
- 絵文字一覧 au(KDDI EZweb)
- auでインラインFLASH
- PHP
- MySQL MariaDB
- サイトの更新情報をPINGサーバに送信する方法
- cronを実行すると『TERM environment variable not set.』というエラーメールが飛ぶ
- セッションの有効期間とか設定とか挙動とかを調べました
- LIMITで件数制限をしつつ、全件数を取得する方法 SQL_CALC_FOUND_ROWS FOUND_ROWS()
スポンサーリンク