首頁 > php框架 > Laravel > Laravel處理session(會話)的方法詳解

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

不言
發布: 2020-07-13 16:41:28
原創
10932 人瀏覽過

 

在網路應用程式中,有必要識別跨越請求的使用者並為每個使用者保存數據,為此,像Laravel這樣的框架提供了一種稱為會話的機制。這篇文章就來為大家介紹Laravel處理session(會話)的方法。

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板