CodeIgniterのセッションをDBドライバで利用する方法
CodeIgniterのセッションをDB利用にする方法をメモ。
ドキュメント
CodeIgniter ユーザガイド — CodeIgniter 3.2.0-dev ドキュメント
↓
セッションライブラリ — CodeIgniter 3.2.0-dev ドキュメント
config.phpの書き換え
「 database 」セッションドライバを使用するためにはまた、すでに言及したように、 テーブルをデータベース上に作成する必要があり、そして $config['sess_save_path'] にテーブル名を設定します。たとえばテーブル名として「 ci_sessions 」を使用する場合、 こうします:
$config[‘sess_driver’] = ‘database’;
$config[‘sess_save_path’] = ‘ci_sessions’;
テーブル名「ci_sessions」は、末尾に「s」が付いている点に注意!(スペルミスに注意!)
MySQLにテーブル作成
データベースにテーブルを作成します……
MySQL の場合:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
KEY `ci_sessions_timestamp` (`timestamp`)
);
主キーの設定
インデックスを張る。
また、「 sess_match_ip 」の設定に応じて PRIMARY KEY を追加する必要があります。 次の例は MySQL と PostgreSQL の両方で動きます:
// sess_match_ip = TRUE のとき
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address);// sess_match_ip = FALSE のとき
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);// 以前のプライマリキーを削除するとき(設定を変更するときに使います)
ALTER TABLE ci_sessions DROP PRIMARY KEY;
/application/config/config.php を開く。
384行目
$config['sess_match_ip'] = FALSE;
FALSEなので、
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);
を追加で実行する。
毎回面倒くさいけど、3ステップなので面倒くさがらずにやる!
セッションの常時有効化
/application/config/autoload.php
で、
$autoload['libraries'] = array();
に
'session'
を追記する。
これでセッションをDBドライバーで利用する準備ができた!