iモードID
3/31に、ドコモの利用者IDをサーバ側で知る新しい仕組み、iモードIDが導入された。
http://www.nttdocomo.co.jp/info/notice/page/080228_00.html
http://www.nttdocomo.co.jp/service/imode/make/content/ip/
従来でも、リンクタグ(a herf=)にutnと書いておくと、利用者IDが送信されたが、いちいち確認画面が出て使いづらかった。
iモードIDでは、いちいち確認画面が出ないので使いやすそう。(ユーザ側の設定で、送信しないようにすることは可能)
URLに"guid=ON"というクエリパラメータをつけてておくと、X_DCMGUIDというHTTPヘッダでIDが送信される。
たいした長さじゃないんだし、パラメータつけなくても送信してくれれば良いのに…、といった感じだが、何かセキュリティ上の都合でもあるんだろうか?
というわけで、早速サンフラットGAMESもiモードID対応にしておいた。(ランキング用の名前をIDに関連付けて保存)
以下、PHPで"guid=ON"のパラメータをつける例。
- get_url_for_imode_id($url)を呼び出せば、guid=ONが付加されたURLが返る
- redirect_self_for_imode_id()を呼び出せば、現在のURLにguid=ONを付加してリダイレクトする
<?php // Docomo判定 function is_docomo() { return strpos($_SERVER["HTTP_USER_AGENT"],"DoCoMo/")===0; } // 可能なら、i-mode ID を送信させるために、URLに"guid=ON"を付加 function get_url_for_imode_id($url) { if (is_docomo() && strpos($url,"guid=ON")===FALSE) { if (strpos($url,"?")===FALSE) { $url.="?guid=ON"; }else{ $url.="&guid=ON"; } } return $url; } // 可能なら、i-mode IDを使わせるようにリダイレクト function redirect_self_for_imode_id() { if (is_docomo() && !isset($_SERVER['HTTP_X_DCMGUID']) && !isset($_GET['guid']) ) { // 自分自身のURLを組み立て $url='http://'.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"]; if ($_SERVER['QUERY_STRING']) { $url.="?".$_SERVER['QUERY_STRING']; } // $newurl=get_url_for_imode_id($url); if ($newurl!=$url) { header('Location: '.$newurl); exit(); } } } ?>