『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バイトで残ったままだった。