回到最上方

文件

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

討論