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
<?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(Requestrequest) {
request->session()->put('my_name','Virat Gandhi');
echo "Data has been added to session";
}
public function deleteSessionData(Requestrequest) {
$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 - 访问以下网址以 从会话中获取数据 。
http://localhost:8000/session/get
步骤8 - 输出将显示如下图所示。
步骤9 - 访问以下URL以 移除会话数据 。
http://localhost:8000/session/remove
步骤10 − 您将看到如下图像所示的消息。