Session
# 配置
由于 HTTP 驱动的应用程序是无状态的,Session提供了一种跨请求存储用户信息的方法。 October 附带了各种Session后端,可通过一个干净、统一的 API 使用。 对流行后端的支持,例如 Memcached (opens new window)、Redis (opens new window),以及直接可用的数据库。
Session配置存储在 config/session.php
中。 请务必查看此文件中提供给您的有据可查的选项。 默认情况下,October 配置为使用 file
Session驱动程序,该驱动程序适用于大多数应用程序。
file
- Session存储在storage/framework/sessions
中。cookie
- Session存储在安全、加密的 cookie 中。database
- Session存储在应用程序使用的数据库中。memcached
/redis
- Session存储在这些基于缓存的快速存储之一中。array
- Session存储在一个简单的 PHP 数组中,不会跨请求持久化。
注意:数组驱动程序通常用于运行单元测试以防止Session数据持久化。
# 保留的密钥
October CMS 在内部使用 flash
Session密钥,因此您不应使用该名称向Session添加项目。
# Session使用
# 在Session中存储数据
使用 Session
门面,您可以调用各种函数来与底层数据进行交互。 例如,put
方法在Session中存储了一条新数据:
Session::put('key', 'value');
# 推送到数组Session值
push
方法可用于将新值推送到作为数组的Session值上。 例如,如果 user.teams
键包含团队名称数组,您可以将新值推送到数组中,如下所示:
Session::push('user.teams', 'developers');
# 从Session中检索数据
当您从Session中检索值时,您还可以将默认值作为第二个参数传递给 get
方法。 如果Session中不存在指定的键,将返回此默认值。 如果将 Closure
作为默认值传递给 get
方法,则 Closure
将被执行并返回其结果:
$value = Session::get('key');
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
# 从Session中检索所有数据
如果您想从Session中检索所有数据,您可以使用 all
方法:
$data = Session::all();
# 检索数据并释放
pull
方法将从Session中检索和删除项目:
$value = Session::pull('key', 'default');
# 确定Session中是否存在项目
has
方法可用于检查Session中是否存在项目。 如果项目存在,此方法将返回 true
:
if (Session::has('users')) {
//
}
# 从Session中删除数据
forget
方法将从Session中删除一条数据。 如果您想从Session中删除所有数据,可以使用 flush
方法:
Session::forget('key');
Session::flush();
# 重新生成Session ID
如果需要重新生成Session ID,可以使用 regenerate
方法:
Session::regenerate();
# 闪存数据
有时您可能希望将项目存储在Session中仅用于下一个请求。 您可以使用 Session::flash
方法来执行此操作。 使用此方法存储在Session中的数据将仅在后续 HTTP 请求期间可用,然后将被删除。 闪存数据主要用于短暂的状态消息:
Session::flash('key', 'value');
如果您需要为更多请求保留闪存数据,您可以使用 reflash
方法,该方法将保留所有闪存数据以用于其他请求。 如果您只需要保留特定的闪存数据,您可以使用 keep
方法:
Session::reflash();
Session::keep(['username', 'email']);