它們是為當前用戶保留數據的簡單方法。 本教程將為您提供在 Laravel 中使用會話的基礎知識。
在 Laravel 中,會話是一種存儲信息的方式,可以正確處理用戶發出的請求。 當用戶啟動 Laravel 應用程序時,會自動為該用戶啟動一個會話。 會話數據存儲在服務器上,一個帶有唯一標識符的小cookie被發送到用戶的瀏覽器以識別會話。
您可以使用會話來存儲要在多個頁面或請求中使用的數據。 例如,您可以將會話用於用戶身份驗證或存儲您希望在應用程序會話期間使用的其他信息。
要在 Laravel 中使用會話,您必須首先在文件中啟用它們 config/session.php
配置。 在此文件中,可以設置與會話相關的配置參數。 例如會話的持續時間、用於存儲會話數據的驅動程序以及會話數據的存儲位置。
下面是一個文件的例子 sessions.php
會話持續時間 120 秒,使用存儲在目錄中的文件 framework/sessions
:
<?php
use Illuminate\Support\Str;
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
];
您還可以使用文件中的環境變量配置會話 .env
. 例如,使用數據庫session驅動,將session數據存儲在session表中,對於mysql類型的DB,可以設置如下環境變量:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
在 Laravel 中可以通過三種方式處理會話數據:
helper
的 global session
;Request instance
. 在所有這些情況下,您存儲在會話中的數據將在同一用戶發出的後續請求中可用,直到會話過期或被手動銷毀。
在 Laravel 中,使用函數 Global Session Helper
這是訪問框架提供的會話服務的便捷方式。 它允許您在應用程序的會話中存儲和檢索數據。 下面是一個如何使用 session helper
:
// Store data in the session
session(['key' => 'value']);
// Retrieve data from the session
$value = session('key');
// Remove data from the session
session()->forget('key');
// Clearing the Entire Session
session()->flush();
您還可以傳遞預值definite 作為函數的第二個參數 session
,如果在會話中找不到指定的鍵,將返回:
$value = session('key', 'default');
Session Request
在 Laravel 中,session 請求實例指的是一個代表 HTTP 請求的對象,它包含請求的相關信息,如請求方法(GET、POST、PUT 等)、請求 URL、請求頭和請求體. 它還包含可用於檢索和操作此信息的各種方法。
通常,您訪問的實例 Session Request
通過變量 $request
在 Laravel 應用程序中。 例如,可以使用輔助函數通過請求實例訪問會話 session()
.
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function example(Request $request)
{
// Store data in the session using the put function
$request->session()->put('key', 'value');
// Retrieve data from the session using the get function
$value = $request->session()->get('key');
// Check if a value exists in the session using the has function:
if ($request->session()->has('key')) {
// The key exists in the session.
}
// To determine if a value exists in the session, even if its value is null:
if ($request->session()->exists('users')) {
// The value exists in the session.
}
// Remove data from the session using the forget function
$request->session()->forget('key');
}
}
在這個例子中,變量 $request
它是類的一個實例 Illuminate\Http\Request
, 表示當前的 HTTP 請求。 功能 session
請求實例返回類的一個實例 Illuminate\Session\Store
,它提供了用於處理會話的各種函數。
Ercole Palmeri