session
配置
Session 的配置文件存储在 config/session.php 文件中。请务必查看此文件中对于你而言可用的选项。默认情况下,Laravel 为绝大多数应用程序配置的 Session 驱动为 file 。在生产环境中,你可以考虑使用 memcached 或 redis 驱动,让 Session 的性能更加出色。
Session driver 的配置预设了每个请求存储 Session 数据的位置。Laravel 自带了几个不错而且开箱即用的驱动:
- file - 将 Session 存储在 storage/framework/sessions 中。
- cookie - Sessions 被存储在安全加密的 cookie 中。
- database - Sessions 被存储在关系型数据库中。
- memcached / redis - Sessions 被存储在基于高速缓存的存储系统中。
- array - Sessions 存储在 PHP 数组中,但不会被持久化。
使用 Session
获取数据
Laravel 中处理 Session 数据有两种主要方法:全局辅助函数 session 和通过一个 Request 实例。首先,我们来看看通过控制器方法类型提示一个 Request 实例来访问 session
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* 展示指定用户的简介
*
* @param Request $request
* @param int $id
* @return Response
*/
public function show(Request $request, $id)
{
$value = $request->session()->get('key');
//
}
}
获取所有 Session 数据
如果你想获取 session 中的所有数据,可以使用 all 方法:
$data = $request->session()->all();
判断 Session 中是否存在某个值
要确定 Session 中是否存在某个值,可以使用 has 方法。如果该值存在且不为 null,那么 has 方法会返回 true:
if ($request->session()->has('users')) {
//
}
存储数据
想要存储数据到 Session,你可以使用 put 方法,或者使用辅助函数 session:
$request->session()->put('key', 'value');
删除数据
forget 方法会从 Session 中删除指定数据,如果想从 Session 中删除所有数据,可以使用 flush 方法:
// 删除单个值...
$request->session()->forget('key');
// 删除多个值...
$request->session()->forget(['key1', 'key2']);
// 全删
$request->session()->flush();
此外 : Illuminate\Support\Facades\Session; 也可以操纵session,方法同上