Laravel處理session(會話)的方法詳解

?

在Web應(yīng)用程序中,有必要識別跨越請求的用戶并為每個用戶保存數(shù)據(jù),為此,像Laravel這樣的框架提供了一種稱為會話的機制。本篇文章就來為大家介紹關(guān)于Laravel處理session(會話)的方法。

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本身也在使用會話。

?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊10 分享