Laravel 会话(session)


会话是用来存储整个请求中的用户信息。Laravel提供了各种驱动,如filecookieapcarrayMemcachedRedis、和 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: 执行成功后,会得到如下输出:

SessionController

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

Data in Session

步骤7: 访问以下网址来从会话中获取数据:

http://localhost:8000/session/get

步骤8: 输出将如下图所示:

Virat Gandhi

步骤9: 访问以下网址删除会话数据:

http://localhost:8000/session/remove

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

Session