CodeIgniterでセッションを使う方法

CodeIgniter

CodeIgniterのセッションを使う方法で少しつまづいたので、メモ。

確認環境

  • CodeIgniter2.1.3英語版

1.セッションライブラリを自動で読み込ませる

application/config/autoload.phpを開き、セッションライブラリを読み込ませる記述を追加します。

個別に読み込ませることもできますが、実質全ページで必要になるので、autoload.phpに記述するのが便利かと思います。

$autoload['libraries'] = array('session');

2.encryption_keyを追加する

CodeIgniterは独自のセキュリティを使っているため、セッションを第三者に操作される事を防ぐために、「encryption_key」を追加する必要があります。
application/config/config.phpを開き、以下の箇所にランダムな文字列(32文字)を記述します。

$config['encryption_key'] = 'ランダムな32文字の記述';

3.セッションを追加する

値をセッションへ登録するには、「$this->session->set_userdata()」を使います。
()の中に、連想配列の形で渡します。例では、postで受け取ったfugaの値をhogeというセッション名で設定しています。
その後、$this->session->set_userdata()に配列$new_sessionを渡す事で設定します。

$new_session = array(
'hoge' => $this->input->post('fuga'),
);
//セッションを設定
$this->session->set_userdata($new_session);

4.セッションデータを読み込む

登録したセッションデータは、$this->session->userdata(‘セッション名’)で呼び出します。
以下の例では、hogeというセッション名があれば通常の処理を、無ければ、ログイン画面へジャンプする記述です。

//セッションhogeの情報があったら
if($this->session->userdata('hoge') != NULL){
//通常処理を行う
}else{
//なかったらログイン画面へ飛ばす
redirect('login');
}

5.セッションデータを削除するには

セッションデータを削除する場合は、「登録していたセッション情報を削除」「セッションそのものを破棄」の2ステップを行って置いた方が無難じゃないかと思います。

例では、「hogeの内容を削除」→「セッションそのものを破棄」となります。

//セッション情報を個別に削除
$this->session->unset_userdata('hoge');
//セッションの破棄
$this->session->sess_destroy();

最後に

個人的にはこれで特に問題もなく動作しましたが、もしかしたら私の気付かない所で穴があるかもしれません。利用は自己責任でお願いします。

参考

タイトルとURLをコピーしました