在網路應用程式中,有必要識別跨越請求的使用者並為每個使用者保存數據,為此,像Laravel這樣的框架提供了一種稱為會話的機制。這篇文章就來為大家介紹Laravel處理session(會話)的方法。
會話可以儲存資料(鍵和值),Laravel提供各種後端會話,可以在config / session.php中設定。
預設設定的檔案會話將會話保存在storage / framework / sessions /目錄中的檔案中。在生產環境中,我們將考慮使用資料庫會話,redis會話等,但在開發環境中,使用預設的檔案會話就足夠了。
php中文網學習專題:php session(包含圖文、影片、案例)
如何在Laravel中使用會話(session)
使用Laravel操作會話有兩種主要方法。
一種是透過傳遞給運算的Request實例。
使用Illuminate \ Session \ Store實例。
// 从会话中获取指定的数据 //在没有存在键的情况下,将返回的默认值指定为第二参数 $value = $request->session()->get('key’); $value = $request->session()->get('key', 'default’); $value = $request->session()->get('key', function () { return 'default'; }); // 获取会话中的所有数据 $data = $request->session()->all(); // 检查指定的数据是否存在于会话中 if ($request->session()->exists('key')) { // 存在 } if ($request->session()->has('key')) { // null不存在 } // 将数据保存到会话 $request->session()->put('key', 'value'); $request->session()->put(['key1' => 'value1', 'key2' => ‘value2']); // 从会话取得指定的数据后,删除该数据 $value = $request->session()->pull('key', 'default’); // 从会话中删除指定的数据 $request->session()->forget('key'); // 从会话中删除所有数据 $request->session()->flush();
另一種方法是使用全域輔助函數session()。
使用Illuminate \ Session \ SessionManager實例。
// 从会话中获取指定的数据 // 在没有存在键的情况下,将返回的默认值指定为第二参数 $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'; }); // 取得会话中的全部数据 $data = session()->all(); // 检查指定的数据是否存在于会话中 if (session()->exists('key')) { // 存在 } if (session()->has('key')) { // null不存在 } // 保存数据到会话 session(['key1' => 'value1', 'key2' => ‘value2']); session()->put(['key1' => 'value1', 'key2' => 'value2']); // 从会话取得指定的数据后,删除该数据 $value = session()->pull('key', 'default’); // 从会话中删除指定的数据 session()->forget('key'); // 从会话中删除所有数据 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時,會執行第一條路徑,可以確認資料已儲存在會話中。
user@example.com
接下來,在瀏覽器中存取/ list-data時,將執行第二條路徑,可以確認先前儲存的資料是否已保留
{"email":"user@example.com","_previous":{"url":"http:\/\/localhost:8000\/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}
當然還有其他數據,但這些是自動保存的數據,Laravel本身也在使用會話。
以上是Laravel處理session(會話)的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!