FuelPHP

FuelPHP まとめノート8 (Sessionクラス)

More than 3 years have passed since last update.


参照

改訂FuelPHP入門

http://fuelphp.jp/docs/1.7/classes/session/usage.html


設定ファイル

fuel/core/config/session.phpをconfig内に置く。

fuel/core/config/session.php


session.php


return array(
     //自動的に初期化して読み込むかどうかを指定
'auto_initialize' => true,

     //cookie,file,db,memcached,radisが指定可能
'driver' => 'cookie',
     
     //クライアントのIPアドレスが変わった時に、セッション情報を破棄するかどうか
'match_ip' => false,

     //クライアントのUser-Agent情報が変わった時にセッション情報を破棄するか指定
'match_ua' => true,

     //セッションに使うCookieのdomain属性を指定
'cookie_domain' => '',

     //セッションに使うCookieのpath属性を指定
'cookie_path' => '/',

     //セッションに使うCookieのhttp_only属性を指定
'cookie_http_only' => null,

     //クッキーを暗号化する場合にtrueを指定
'encrypt_cookie' => true,

     //ブラウザを閉じた時に、Cookieを削除するかどうかを指定
'expire_on_close' => false,

     //expire_on_closeがfalseの場合に、有効期限を秒数で指定
'expiration_time' => 7200,

     //セッションIDの自動変更周期を秒数で指定
'rotation_time' => 300,

     //フラッシュセッションの識別子を指定
'flash_id' => 'flash',

     //次のHTTPリクエスト時に読み込みの有無に関わらずフラッシュセッションを削除。
     //falseに設定すると読み込まない限り削除されない
'flash_auto_expire' => true,

     //get_flash()時に必ずフラッシュセッションを削除する場合にtrue
'flash_expire_after_get' => true,

     //セッションCookieが送られなかった際にPOSTデータで受け取った変数に、
     //POSTデータで受け取った変数にセッション情報をコピーする場合にその変数名を指定
'post_cookie_name' => '',

     //Cookieを使いたくないリクエストでCookie情報を渡すために使うHTTPヘッダ名
'http_header_name'    => 'Session-Id',

     //Cookieを有効にする場合にtrue
'enable_cookie'      => true,

     //PHPネイティブのセッションと同期させる場合にtrue
'native_emulation' => false,

     //ドライバにCookieを指定した場合の設定項目
'cookie' => array(
'cookie_name' => 'fuelcid',
),

     //ドライバにfileを設定した場合の設定項目
'file' => array(
'cookie_name' => 'fuelfid',
'path' => '/tmp',
'gc_probability'=> 5,
),

     //ドライバにmemcachedを設定した場合の設定項目
     'memcached' => array(
'cookie_name' => 'fuelmid',
'servers' => array(
'default' => array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
),
),

     //ドライバにdbを設定した場合の設定項目
     'db'       => array(
'cookie_name' => 'fueldid',
'database' => null,
'table' => 'sessions',
'gc_probability'=> 5,
),
     //ドライバにredisを指定した場合の設定項目
'redis' => array(
'cookie_name' => 'fuelrid',
'database' => 'default', ),
);



set()メソッド

//useridをセッションに格納

Session::set('userid', '$userid');

//より複雑な値を格納することも出来る
Session::set('login', array('user'=>$userid, 'hash'=>$login));


get()メソッド

set()メソッドで保存したセッションデータはget()で同じ変数名を指定することで取得できる。

//セッションからuseridを取得する

$userid = Session::get('userid');
if($userid === false)
{
  echo 'no user is logged in';
}

//配列をまるごと取得する
$arr = Session::get('array');

//SimpleAuthのログイン情報を取得
$username = Session::get('username');
$login_hash = Session::get('login_hash');

//全セッションデータを取得
$sess_vars = Session::get();


フラッシュセッション

set_flash()

get_flash()

フラッシュセッションの読み書きはset_flash()とget_flash()を用いて行う。引数の指定はset,getと同じ。

keep_flash()
フラッシュセッションを読み込まれていない状態に戻す。次のリクエストまで延ばす。引数には変数名を指定する

Session::keep_flash('ticket');


delete() delete_flash()

//useridという名前のセッションデータを削除する

Session::delete('userid');

//ticketという名前のフラッシュセッションを削除する
Session::delete_flash('ticket');


Session::rotate();

//セッションIDを変更する

session::rotate();

//セッションIDの取得にはSession::key()を使う

$sess_id = Session::key();