CakePHP(1.2.1.8004)でPCサイトと携帯サイトのログインページ作成メモ。
HTML出力振り分け(2)とセッションの設定で投稿したコードにログイン関連の処理を追加します。
今回は、userモデルの作成まで行います。
CakePHP(1.2.1.8004)で携帯サイトを作るためのセッションの設定メモです。
携帯から接続した場合、セッションIDをURLに付加することにします。
そして、認証を行わないと見ることができないページを作るとき、そのページを見るには、基本的に端末IDを送信してもらうことにします。
Zend_Session::rememberMe()の使用に関してのメモです。
Zend Framework: Documentationに、次のような記述があります。
セッションの開始前に Zend_Session::rememberMe() を使用すると、セッションクッキーの有効期限を制御することができます。
Zend_Session::start()の後に、Zend_Session::rememberMe() を使用しても、クッキーの有効期限が変化するようです(TODO:詳細調査)。
Zend_Session::rememberMeを使用すると、session_regenerate_id(true)がコールされています(ZendFramework-1.0.1)。
session_regenerate_id(true)をコールすると、session_set_cookie_paramsがsession_startの後でもクッキーの有効期限が変化するようです(PHP 5.2.3)。
Firefox2とInternet Explorer6のセッション関連の振る舞いの違い
Zend_Session::rememberMeを使用しない場合
Firefox2は、ブラウザを閉じても、セッションが継続するようです(クッキーの有効期限は、「セッション終了時」となっています。)(TODO:詳細調査)。
(Firefox2のクッキーに関する設定は、[オプション]ダイアログの[プライバシー]タブの[Cookie を保存する期間]を「サイトが指定した期限まで」に設定しています。)
Internet Explorer6は、ブラウザを閉じると、セッションは継続しません。
Zend_Session::rememberMeを使用した場合
Firefox2は、クッキーの有効期限が設定され、その有効期限の間は、ブラウザを閉じても、セッションが継続するようです。
Internet Explorer6も、ブラウザを閉じても、セッションが継続しました。
その他のメモ
remember_me_secondsに設定する値
Zend FrameworkのAPI Guideに、次の記述があります。
Due to clock errors on end users’ systems, large values are recommended to avoid undesirable expiration of session cookies.
大きい値がどのくらいの秒数かわかりませんが、100程度の値だとInternet Explorer6では、セッションをまったく継続できないようです。
HTTPSで通信する際、PHPでセッションを開始する前に、次をコードに記述する必要があることのメモです。
「PHPサイバーテロの技法―攻撃と防御の実際」の137ページより。
Zend_Session
Zend FrameworkのZend_Sessionを使用する場合は、次のように指定すると、cookie_secureがOnとなることをphpinfo()で確認できました。
-
Zend_Session::start();
セッション関連の参考リンク
PHPのマニュアル
PHP: セッション処理関数(session) - Manual
Zend Framework「プログラマ向けリファレンスガイド」のZend_Session
Zend Framework: Documentation