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;

Comments are closed.