CakePHP::DoCoMoの端末ID(utn)取得で認証エラー
12月 13th, 2007 admin Posted in CakePHP, PHP | コメントは受け付けていません。
CakePHPで構築したサイトで、DoCoMoの端末で端末ID(UID?)を取得しようとしても認証エラーで取得が出来ない・・・
原因は認証のところで$this->Session->valid();とセッションの正当性のチェックをしていたこと。
端末IDを取得するとユーザーエージェントが変更されるので、直前のアクセスと現在のアクセスでユーザーエージェントが違うということになり「セッションハイジャックじゃね?」と認証エラーになっていました。
あと少しはまったのが、CakePHPにおいてini_set(‘session.use_trans_sid’, 1);が効かない件で、よく読んでみたら/cake/libs/session.phpの__initSession()でini_set(‘session.use_trans_sid’, 0);に設定されていましたので/cake/libs/controllers/components/session.phpを/app/controllers/components/session.phpにコピーして、メソッドを上書きして解決しました。
↓こんな感じでモバイルとそうでないのを分けた
case 'php': if (!isset($_SESSION)) { if (function_exists('ini_set')) { if(defined('MOBILE')){ ini_set('session.use_trans_sid', 1); }else{ ini_set('session.use_trans_sid', 0); } ini_set('session.name', CAKE_SESSION_COOKIE); ini_set('session.cookie_lifetime', $this->cookieLifeTime); ini_set('session.cookie_path', $this->path); } } break;