CakePHPでセッションをDBで扱うようにする
タイトル通りのことを仕事で質問されたけど、CakePHPをちゃんと使ったことも無いし知らなかったので調べた。ネットで検索すれば普通に出てきますが一応メモ。
使ったバージョンは1.3.2 stableです。
セッションを入れたり出したりするテーブルを作成
CREATE TABLE sessions ( id VARCHAR(255) NOT NULL PRIMARY KEY, data TEXT NOT NULL DEFAULT '', expires INT DEFAULT NULL );
app/config/core.php に設定
あんまり関係ないですがSession.modelの指定をしないといけないというのが分からなくて少しはまりました。
下記のように変更/追記。
# Configure::write('Session.save', 'php'); があったら下記に変更 Configure::write('Session.save', 'database'); # 以下を追記 Configure::write('Session.model', 'Session'); Configure::write('Session.table', 'sessions'); Configure::write('Session.database', 'default');
controller内で使う
特にmodelクラスとか作らなくても動きます。
// 入れる $this->Session->write('name', 'おはようおはようおはよう'); // 出してviewで使う $this->set('name', $this->Session->read('name'));