2010年1月19日火曜日

Zend_SessionでCookieを使用しないセッション管理

デフォルトはCookieを使うようになっているので、php.iniもしくは.htaccessで使用しないように設定。
勝手にURLにセッションをつけない様にする。セッションIDの名称変更。

.htaccessの記載例)

php_value session.use_cookies 0 #Cookie利用しない
php_value session.use_only_cookies 0 #Cookie以外も利用
php_value session.use_trans_sid 0 #URLへの自動付与OFF
php_value session.name hogesession #セッションID名称を変更


Zend_Sessionでセッションをスタート

Zend_Session::setOptions(array(use_only_cookies=>'off'));
Zend_Session::start();
$session=new Zend_Session_Namespace('hoge');


Zend_Sessionでは、use_only_cookiesがデフォルトでONに設定されるようで、.htaccessでoffにしていても、ONになってしまうので、Zend_Session::startの引数で必ずオプションを設定しておいたほうがいい。

.htaccessで設定したほうが、プログラム内で設定するよりもいいと思うけど、Zend_Sessionが動作する際に、上書きしてしまうので、すべてZend_Sessionのパラメータで設定するのでもいいかも。

Zend_Sessionを利用する場合は以下は必ず必要なので忘れずに。
php_value session.auto_star 0 #セッション自動開始OFF

そのほか指定しそうなパラメータ

・有効期間
php_value session.gc_maxlifetime 1800 #有効期間を30分

・セッション情報保存先を指定(ファイルに出力する場合)
#/tmp/php/hogeディレクトリへ出力 書き込み権限は必要
php_value session.save_path=/tmp/php/hoge



Zend_Sessionを利用する際にしてはいけないこと。
・session_start関数は使用しない。
・Zend_Session::start()使用やZend_Session_Namaspaces()の生成などは、Zend_Session関連のそのほかの操作の前には必ず処理をさせておく


view部分で、セッション名称やセッションIDをを取得するには、以下の関数から取得する。
セッション名:session_name();
セッションID:session_id();

0 件のコメント: