Laravel - 会话
会话用于在请求中存储有关用户的信息。Laravel 提供各种驱动程序,如文件、cookie、apc、数组、Memcached、Redis和数据库来处理会话数据。默认情况下,使用文件驱动程序,因为它是轻量级的。可以在存储在config/session.php的文件中配置会话。
访问会话数据
要访问会话数据,我们需要一个可以通过 HTTP 请求访问的会话实例。获取实例后,我们可以使用get()方法,该方法将接受一个参数"key"来获取会话数据。
$value = $request->session()->get('key');
您可以使用 all() 方法获取所有会话数据,而不是 get() 方法。
存储会话数据
可以使用 put() 方法将数据存储在会话中。put() 方法将采用两个参数,即 "key" 和 "value"。
$request->session()->put('key', 'value');
删除会话数据
forget() 方法用于从会话中删除项目。此方法将以 "key" 作为参数。
$request->session()->forget('key');
使用 flush() 方法而不是 forget() 方法来删除所有会话数据。使用 pull() 方法从会话中检索数据,然后将其删除。pull() 方法也将以 key 作为参数。forget() 和 pull() 方法之间的区别在于 forget() 方法不会返回会话的值,而 pull() 方法将返回该值并从会话中删除该值。
示例
步骤 1 −通过执行以下命令创建一个名为 SessionController 的控制器。
php artisan make:controller SessionController --plain
步骤 2 − 成功执行后,您将收到以下输出 −
步骤 3 − 将以下代码复制到文件中
app/Http/Controllers/SessionController.php.
app/Http/Controllers/SessionController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; class SessionController extends Controller { public function accessSessionData(Request $request) { if($request->session()->has('my_name')) echo $request->session()->get('my_name'); else echo 'No data in the session'; } public function storeSessionData(Request $request) { $request->session()->put('my_name','Virat Gandhi'); echo "Data has been added to session"; } public function deleteSessionData(Request $request) { $request->session()->forget('my_name'); echo "Data has been removed from session."; } }
步骤 4 − 在 app/Http/routes.php 文件中添加以下几行。
app/Http/routes.php
Route::get('session/get','SessionController@accessSessionData'); Route::get('session/set','SessionController@storeSessionData'); Route::get('session/remove','SessionController@deleteSessionData');
步骤 5 − 访问以下 URL 以 在会话中设置数据。
http://localhost:8000/session/set
步骤 6 −输出将如下图所示显示。
步骤 7 − 访问以下 URL 以 从会话中获取数据。
http://localhost:8000/session/get
步骤 8 − 输出将如下图所示显示。
步骤 9 −访问以下 URL 以删除会话数据。
http://localhost:8000/session/remove
步骤 10 − 您将看到如下图所示的消息。