毎日が86400秒の残り時間

ビル・ゲイツのように計画実行のスピードを上げる

焦らず、しかし休まず、星のように己がまわりを巡れ
(ヨハン・ヴォルフガング・フォン・ゲーテ)

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 を追加する必要があります。 次の例は MySQLPostgreSQL の両方で動きます:

// 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ドライバーで利用する準備ができた!