Laravel Session怎么用?Session存储和获取数据有哪些方法?

文章导读
上一个 测验 下一个 会话用于在多个请求之间存储用户信息。Laravel 提供了多种驱动程序,如 file, cookie, apc, array, Memcached, Redis, 和 database,来处理会话数据。默认使用 file 驱动程序,因为它轻量级。会话可
📋 目录
  1. A 访问会话数据
  2. B 存储会话数据
  3. C 删除会话数据
A A

Laravel - 会话



上一个
测验
下一个

会话用于在多个请求之间存储用户信息。Laravel 提供了多种驱动程序,如 file, cookie, apc, array, Memcached, Redis,database,来处理会话数据。默认使用 file 驱动程序,因为它轻量级。会话可以在 config/session.php 文件中配置。

访问会话数据

要访问会话数据,我们需要一个 session 实例,可以通过 HTTP request 获取。获取实例后,我们可以使用 get() 方法,该方法接受一个参数 key,用于获取会话数据。

$value = $request->session()->get('key');

你可以使用 all() 方法来获取所有会话数据,而不是使用 get() 方法。

存储会话数据

可以使用 put() 方法将数据存储到会话中。put() 方法接受两个参数:keyvalue

$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 − 执行成功后,你将收到以下输出 −

SessionController

步骤 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 − 输出将如下图所示。

Data in Session

步骤 7 − 访问以下 URL 来 从会话中获取数据

http://localhost:8000/session/get

步骤 8 − 输出将如下图所示。

Virat Gandhi

步骤 9 − 访问以下 URL 来 移除会话数据

http://localhost:8000/session/remove

步骤 10 − 你将看到如下图所示的消息。

Session