携帯はCookieが使えないからセッションを維持するにも一工夫必要。
と思ったら自分のAUの携帯は、Cookieが使えるらしく、普通にセッションが維持できてた。
と、どうやら、最近のAUとSoftbankの携帯はCookieに対応している機種が多いらしいです。
しゃーないので、docomoからシミュレータをゲットして試してみたら、ばっちりセッションを維持できなかった。これで、開発ができる。
(追記:)キャリアが配布しているシミュレータよりFireMobilesimulatorの方が100倍いいかも
と思ったら自分のAUの携帯は、Cookieが使えるらしく、普通にセッションが維持できてた。
と、どうやら、最近のAUとSoftbankの携帯はCookieに対応している機種が多いらしいです。
しゃーないので、docomoからシミュレータをゲットして試してみたら、ばっちりセッションを維持できなかった。これで、開発ができる。
(追記:)キャリアが配布しているシミュレータよりFireMobilesimulatorの方が100倍いいかも
「携帯でuse_trans_sidを使ったセッションの扱い 前編」が最高に参考になりました。
まず第一にPHPのconfigure時に「--enable-trans-sid」が指定されている必要がある。XAMPPとかだとはじめから有効になっているみたい。
で、次にセッションの設定を変える。
このサイトでは、4通りの方法が記述されてたけど、まあ、せっかくZend Frameworkでっていってるから4つめの
で、対応することに。$sessionConfig = array(
'use_only_cookies' => 'off',
'use_trans_sid' => '1',
);
$session = Zend_Session::setOptions($sessionConfig);
これをどこに書くか?だけど、とりあえずindex.phpに書いといた。
これでCookieに対応していないブラウザに対してだけ<a>とか<form>とかのURLにセッションIDが付与される。docomoのシミュレータでもログインができた。
と、思ったらリダイレクトをかけているところには、自分でセッションIDをURLに足してやる必要があった。。。
$this->_redirect('/top?PHPSESSID='.Zend_Session::getId());こんな感じだけど、これだと無条件にセッションIDが付いちゃうから、Cookieの判別してCookie対応していない場合だけつけるようにしたい。もう今日はやらないけど、Zend Framework使ってるならトップページも動的なはずなので、そのときに適当なCookie発行して、それが取れなかったらCookie対応していない、という判断をすればいいんだろうな。
あとは、セッションハイジャック対策をできるだけやることになるけど、それはまた今度。
コメントする