『CakePHP』を使ってみる 〜11〜 セッションの使い方確認
『CakePHP』1.2でのセッションの使い方確認。
セッションについては 1.1 から変わった部分はないみい。
とりあえず、コントローラにいろいろ書いて確認してみた。
設定
セッションデータの保存場所
設定でセッションデータの保存場所についての設定。
- /home/theworld/cake/project/tutorial/config/core.php
'php' Uses settings defined in your php.ini.
'cake' Saves session files in CakePHP's /tmp directory.
'database' Uses CakePHP's database sessions.
保存場所は CakePHP の tmp にしてみたいので、 cakeを指定。
- Configure::write('Session.save', 'cake');
データベースサーバーのスペックに余裕があるから、何かまともに作るときはDBにしてみようかな。
他はとりあえずデフォルト設定で。
セッションに書き込み・削除
write で書き込み。 read で読み込み。わかりやすい。
// Write $this->Session->write('myname', 'Yossy'); echo 'Write: '.$this->Session->read('myname'); // Delete $this->Session->delete('username'); echo 'Delete: '.$this->Session->read('myname');
出力結果。
Write: Yossy
Delete:
セッションに配列データを書き込み
連想配列を書き込むこともできるらしいので試してみる。
$sesData = array('userName' => 'Yossy', 'hatenaId' => 'theworldjp'); $this->Session->write('profile', $sesData); pr($this->Session->read('profile'));
結果。
Array ( [userName] => Yossy [hatenaId] => theworldjp )
セッションのデータファイルを開いてみたら以下のようになっていた。
Config|a:4:{s:9:"userAgent";s:32:"1d4503fa19b922d6c2bb3d8625fe365f";s:4:"time";i:1205271909;s:4:"rand";i:1414135229;s:7:"timeout";i:10;}profile|a:2:{s:8:"userName";s:5:"Yossy";s:8:"hatenaId";s:10:"theworldjp";}
ソースを読んでみたところ Config という名前で 自動的にデータが格納されるようになっているようだ。
見にくいので Config を出力してみる。
pr($this->Session->read('Config'));
結果。
Array ( [userAgent] => 1d4503fa19b922d6c2bb3d8625fe365f [time] => 1205272109 [rand] => 1414135229 [timeout] => 10 )
セッションデータを全て破棄
destrory()でまとめてセッションデータを破棄できる。
$this->Session->destroy();
destry()の場合は セッションデータのファイルが消える。
$this->Session->delete('Config'); $this->Session->delete('profile');
これだとセッションデータのファイルは0バイトで残ったままだった。