?
在Web應(yīng)用程序中,有必要識別跨越請求的用戶并為每個用戶保存數(shù)據(jù),為此,像Laravel這樣的框架提供了一種稱為會話的機制。本篇文章就來為大家介紹關(guān)于Laravel處理session(會話)的方法。
會話可以存儲數(shù)據(jù)(鍵和值),Laravel提供各種后端會話,可以在config / session.php中設(shè)置。
默認設(shè)置的文件會話將會話保存在storage / framework / sessions /目錄中的文件中。在生產(chǎn)環(huán)境中,我們將考慮使用數(shù)據(jù)庫會話,redis會話等,但在開發(fā)環(huán)境中,使用默認的文件會話就足夠了。
php中文網(wǎng)學(xué)習(xí)專題:php session (包含圖文、視頻、案例)
如何在Laravel中使用會話(session)
使用Laravel操作會話有兩種主要方法。
一種是通過傳遞給操作的Request實例。
使用Illuminate Session Store實例。
//?從會話中獲取指定的數(shù)據(jù) //在沒有存在鍵的情況下,將返回的默認值指定為第二參數(shù) $value?=?$request->session()->get('key’); $value?=?$request->session()->get('key',?'default’); $value?=?$request->session()->get('key',?function?()?{ ????return?'default'; }); //?獲取會話中的所有數(shù)據(jù) $data?=?$request->session()->all(); //?檢查指定的數(shù)據(jù)是否存在于會話中 if?($request->session()->exists('key'))?{ ????//?存在 } if?($request->session()->has('key'))?{ ????//?null不存在 } //?將數(shù)據(jù)保存到會話 $request->session()->put('key',?'value'); $request->session()->put(['key1'?=>?'value1',?'key2'?=>?‘value2']); //?從會話取得指定的數(shù)據(jù)后,刪除該數(shù)據(jù) $value?=?$request->session()->pull('key',?'default’); //?從會話中刪除指定的數(shù)據(jù) $request->session()->forget('key'); //?從會話中刪除所有數(shù)據(jù) $request->session()->flush();
另一種方法是使用全局輔助函數(shù)session()。
使用Illuminate Session SessionManager實例。
//?從會話中獲取指定的數(shù)據(jù) //?在沒有存在鍵的情況下,將返回的默認值指定為第二參數(shù) $value?=?session('key’); $value?=?session('key',?'default'); $value?=?session('key',?function?()?{ ????return?'default'; }); $value?=?session()->get(‘key'); $value?=?session()->get('key',?'default'); $value?=?session()->get('key',?function?()?{ ????return?'default'; }); //?取得會話中的全部數(shù)據(jù) $data?=?session()->all(); //?檢查指定的數(shù)據(jù)是否存在于會話中 if?(session()->exists('key'))?{ ????//?存在 } if?(session()->has('key'))?{ ????//?null不存在 } //?保存數(shù)據(jù)到會話 session(['key1'?=>?'value1',?'key2'?=>?‘value2']); session()->put(['key1'?=>?'value1',?'key2'?=>?'value2']); //?從會話取得指定的數(shù)據(jù)后,刪除該數(shù)據(jù) $value?=?session()->pull('key',?'default’); //?從會話中刪除指定的數(shù)據(jù) session()->forget('key'); //?從會話中刪除所有數(shù)據(jù) session()->flush();
我們來看在Laravel中使用會話(session)的具體示例
一個非常簡單的例子
我們定義以下路線。
routes/web.php Route::get('/put-data',?function?()?{ ????session()->put(['email'?=>?'user@example.com']); ????return?session()->get('email'); }); Route::get(‘/list-data',?function?()?{ ????return?session()->all(); });
首先,在瀏覽器中訪問/ put-data時,會執(zhí)行第一條路徑,可以確認數(shù)據(jù)已保存在會話中。
user@example.com
接下來,在瀏覽器中訪問/ list-data時,將執(zhí)行第二條路徑,可以確認之前保存的數(shù)據(jù)是否已保留
{"email":"user@example.com","_previous":{"url":"http://localhost:8000/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}
當然還有其他數(shù)據(jù),但這些是自動保存的數(shù)據(jù),Laravel本身也在使用會話。
?