Laravel - Session


[ 基础配置 ]

Session 相关的配置文件存储在 config/session.php。请务必查看此文件中对于你可用的选项。默认设置下,Laravel 的配置是使用文件作为 Session 驱动,大多数情况下能够运行良好。在生产环境下,你可以考虑使用 memcachedredis 驱动来达到更出色的性能表现。

Session 配置的 driver 的选项定义了每次请求的 Session 数据的存储位置。Laravel 附带了几个不错且可开箱即用的驱动:

file

将 Session 保存在 storage/framework/sessions

Session 保存在安全加密的 Cookie 中。

database

Session 保存在关系型数据库。

memcached/ redis

将 Sessions 保存在其中一个快速且基于缓存的存储系统中。

array

将 Sessions 保存在简单的 PHP 数组中,并只存在于本次请求.

数组驱动一般用于 测试 防止存储在 Session 的数据被持久化。

[ 获取单个Session ]

A - 通过请求实例来获取session

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

B - 全局 Session 辅助函数

// 获取 Session 中的一条数据...
$value = session('key');

// 指定一个默认值...
$value = session('key', 'default');

// 存储一条数据至 Session 中...
session(['key' => 'value']);

[ 获取全部 Session ]

//请求实例形式
$value = $request->session()->all();

//全局辅助函数形式
$value = session()->all();

[ Session是否存在 ]

//请求实例形式
if($request->session()->has('key')){ 
    ...
}

//全局辅助函数形式
if(session()->has('key')){
    ...
}

如果需要判断的 session , 值可能为 null的, 需要使用 exists ,而不是 has

//请求实例形式
if($request->session()->exists('key')){ 
    ...
}

//全局辅助函数形式
if(session()->exists('key')){
    ...
}

[ PUSH & PULL ]

// 指定一个默认值...
$value = session('key', 'default');

除了这个用法,还可以使用PUSH方法来,存入session

$request->session()->push('user.teams', 'developers');

这样对于存储数据session是相当方便的

而PULL方法,则会从 Session 中取出并删除数据

$value = $request->session()->pull('key', 'default');

[ 闪存session ]

使用 flash方法。使用这个方法保存 session,只能将数据保留到下个 HTTP 请求,然后就会被自动删除。

$request->session()->flash('status', 'Task was successful!');

下一次的请求如果还需要这次得到的 闪存session, 可以使用 reflash 方法

$request->session()->reflash();

可以保留指定的session

$request->session()->keep(['username', 'email']);

[ 删除session ]

//清除单个session
$request->session()->forget('key');

//清除全部session
$request->session()->flush();

[ 自定义驱动 ]

这么高档不会,略过。

results matching ""

    No results matching ""