FuelPHPのSessionクラスについてまとめてみた。
こんにちは。ファガイです。本日は、FuelPHPのSessionクラスについてまとめます。
基本(通常のセッションの読み書き)
set()メソッド
セッションにセットするメソッドです。
set() 第1引数:セッション変数名 第2引数:値(配列も可)
例
//文字列を渡す
Session::set('userid', 'fagai');
//配列を渡す
Session::set('login', array('user'=>$userid, 'hash'=>$login_hash));
get()メソッド
セッションからゲットするメソッドです。第1引数に何も指定しない場合はsessionをすべて取得することが出来ます(連想配列)。指定した変数に何も入って無い場合はnullが返されます。
get() 第1引数:セットされているセッションデータの変数名
例
//セッションデータ取得
$userid = Session::get('userid');
//SessionAuthのログイン情報取得
$username = Session::get('username');
$login_hash = Session::get('login_hash');
一時的なセッションの作成(フラッシュセッション)
一時的なセッション(フラッシュセッション)とは、次のリクエスト時に自動的に削除されるセッションのことです。例えば、ログインしたら「ログインしました。」等を表示するとか。フォーム送信時にチケットを保持するとか。(Csrf対策)
フラッシュセッションは、他のセッションデータを衝突しないように別の名前空間で管理がされています。(Config/Session.phpのflash_id参考)
set_flash(),get_flash()メソッド
フラッシュセッションを読み書きするメソッドです。引数はset()、get()メソッドと同様になります。
keep_flash()メソッド
フラッシュセッションの寿命を次のリクエストまで延ばします。
keep_flash() 第1引数:フラッシュセッションの伸ばしたい変数名
セッションの削除、破棄
セッションの変数を削除する場合には、delete()及びdelete_flash()を使用します。普通のセッションデータであればdelete()メソッド。フラッシュセッションであればdelete_flash()メソッドを使います。
Session::delete('userid');
Session::delete_flash('ticket');
セッション自体を破棄するには、Session::destroy()で破棄出来ます。
セッションIDの変更、取得
セッションIDはSessionクラスの設定で自動的に変更がされますが、明示的に行いたい時にはSession::rotate()メソッドを使用します。
Session::rotate();
セッションIDを取得したい時にはSession::key()を使います。
$sess_id = Session::key();
Sessionクラスの設定
Sessionクラスの設定は、Core/Config/session.phpにあります。APPPATH/Config/session.phpにコピーして使いましょう。
return array(
    'auto_initialize'    => true,
    'driver'        => 'cookie',
    'match_ip'        => false,
    'match_ua'        => true,
    'cookie_domain'     => '',
    'cookie_path'        => '/',
    'cookie_http_only'    => null,
    'expire_on_close'    => false,
    'expiration_time'    => 7200,
    'rotation_time'        => 300,
    'flash_id'        => 'flash',
    'flash_auto_expire'    => true,
    'post_cookie_name'    => '',
    'cookie'    => array(
        'cookie_name'=> 'fuelcid',
    ),
    'file'    => array(
        'cookie_name'        => 'fuelfid',
        'path'            => '/tmp',
        'gc_probability'    => 5
    ),
    'memcached'    => array(
        'cookie_name'=> 'fuelmid',
        'servers'    => array(    
          'default' => array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100)
      ),
    ),
    'db'     => array(
        'cookie_name'   => 'fueldid',    
        'database'      => null,
        'table'         => 'sessions',
        'gc_probability'    => 5
    ),
    'redis'    => array(
        'cookie_name'        => 'fuelrid',
        'database'            => 'default'
    )
);
以下にまとめています。
| 項目名 | 説明 | 
|---|---|
| auto_initialize | 自動的に初期化して読み込むかどうか | 
| driver | ドライバーの設定。cookie,file,db,memcached,redisが指定可能。 | 
| match_ip | クライアントのipが変わった時にセッションを破棄するかどうか | 
| match_ua | クライアントのUAが変わった時にセッションを破棄するかどうか | 
| cookie_domain | セッションに使うCookieのドメイン属性指定 | 
| cookie_path | セッションに使うCookieのpath属性指定 | 
| cookie_http_only | セッションに使うCookieのhttp_only属性指定 | 
| expire_on_close | ブラウザを閉じたらCookieも削除するかどうか | 
| expiration_time | expire_on_closeがfalseなら有効期限を秒数で指定 | 
| rotation_time | セッションIDの自動変更周期の秒数設定 | 
| flash_id | フラッシュセッションの識別子指定 | 
| flash_auto_expire | 次のhttpリクエスト読み込み時にflashが読み込まれなくてもフラッシュセッションを削除。falseなら読み込まない限り削除されない。 | 
| post_cookie_name | セッションCookieが送られなかった時にPOSTデータで受け取った変数へセッション情報をコピーする場合は、その変数名を指定 | 
この項目以降の内容ですが、ドライバにその項目を指定した際の設定項目になっています。こちらは、どうにか読めなくもないレベルでしたので省略。一つ言っておくと、gc_probabilityはガーベッジコレクションの確率らしいです。(デフォルトだと100回に5回起こる)
注意
ドライバにCookieを指定した時、セッション情報はすべて暗号化されてCookieに埋め込まれます。ただし、Cookieのサイズが4KBを超えるとエラーになるため、情報量が多い時には他のドライバーを使う。
こんな所です。参考書籍はFuelPHP入門です。参考になる。
  
  
  
  