Laravel 会话(session)
会话是用来存储整个请求中的用户信息。Laravel提供了各种驱动,如file、cookie、apc、array、Memcached、Redis、和 database 来处理会话数据,默认使用文件驱动,因为它是轻量级的。会话可以在config/session.php的文件中进行配置。
获取会话数据
要访问会话数据,我们需要一个会话的实例,可以通过HTTP request来访问。在获得实例后,我们可以使用get()方法,该方法将接受一个参数"key",以获得会话数据。
$value = $request->session()->get('key');
你可以使用all()获取所有会话数据。
保存会话数据
数据可以使用put()方法保存在会话中,put()方法接受两个参数,"key"和"value"。
$request->session()->put('key', 'value');
删除会话数据
forget()方法用于删除会话中项目,该方法将接受"key"作为参数。
$request->session()->forget('key');
使用flush()方法可以删除所有会话数据,使用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(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文件中:
Route::get('session/get','SessionController@accessSessionData'); Route::get('session/set','SessionController@storeSessionData'); Route::get('session/remove','SessionController@deleteSessionData');
步骤5: 访问以下网址来设置数据到会话中:
http://localhost:8000/session/set
步骤6: 输出将如下图所示:
步骤7: 访问以下网址来从会话中获取数据:
http://localhost:8000/session/get
步骤8: 输出将如下图所示:
步骤9: 访问以下网址删除会话数据:
http://localhost:8000/session/remove
步骤10: 你将看到如下图所示的消息: