Session
設置
因為 HTTP 驅動的應用是無狀態的,所以 session 提供了一個方法去儲存使用者跨請求 (across requests) 的資訊,Laravel 提供數種的後端存取方式,並使用乾淨、統一的 API,並支援熱門的後端資訊儲存應用,像是 Memcached 或是 Redis。
session 的設定檔是放在 app/config/session.php
,請務必檢視一下設定檔中選項前的註解說明,,預設視使用 native
原生的 session 驅動,這個驅動在大多數的應用都可以執行的非常好。
Session使用
儲存資料至 Session
Session::put('key', 'value');
Session::put('user', array('name'=>'john' , 'age'=> 28));
從 Session 取得資料
$value = Session::get('key');
// value
$value = Session::get('user.name');
// john
$value = Session::get('user.age');
// 28
從 Session 取得資料,若無資料回傳預設值
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
判斷資料是否存在 Session 當中
if (Session::has('users'))
{
//
}
移除 Session 中的指定資料
Session::forget('key');
移除 Session 中的所有資料
Session::flush();
重新產生 Session ID
Session::regenerate();
閃存資料
有時你可能僅想儲存下一次請求所需要的 session,你可以使用 Session::flash
方法去達到這樣的目的:
Session::flash('key', 'value');
更新目前閃存資料到下一個請求前
Session::reflash();
更新目前部分的閃存資料到下一個請求前
Session::keep(array('username', 'email'));
資料庫Sessions
當使用 database
做為 session 驅動,你會需要設定包含 session 項目的資料表,下列是使用 Schema
去定義 session 項目資料表的例子:
Schema::create('sessions', function($table)
{
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});
當然你可以使用 session:table
的 Artisan 指令去產生這個 session 資料表!
php artisan session:table
composer dump-autoload
php artisan migrate