bayfrontmedia / session-manager
一个不依赖框架的PHP库,用于使用多种存储选项管理会话。
Requires
- php: ^8.0
- ext-pdo: *
- bayfrontmedia/php-array-helpers: ^2.0
- bayfrontmedia/php-cookies: ^2.0
README
一个不依赖框架的PHP库,用于使用多种存储选项管理会话。
许可证
本项目为开源项目,可在MIT许可证下获得。
作者
要求
- PHP
^8.0
- PDO PHP扩展
安装
composer require bayfrontmedia/session-manager
使用
会话处理器
必须将一个 \SessionHandlerInterface
实例传递给 Bayfront\SessionManager\Session
构造函数。有多种会话处理器可供选择,每种都有自己的配置要求。
此外,您还可以创建并使用自己的会话处理器与Session Manager一起使用。
LocalHandler
LocalHandler
允许您使用原生PHP将会话存储在本地文件系统中。
use Bayfront\SessionManager\Handlers\LocalHandler;
$handler = new LocalHandler('/root_path');
PdoHandler
PdoHandler
允许您使用一个 PDO
实例将会话存储在数据库中。
use Bayfront\SessionManager\Handlers\PdoHandler;
$dbh = new PDO('mysql:host=localhost;dbname=DATABASE_NAME', 'USERNAME', 'PASSWORD');
// Pass the table name to be used in the constructor - "sessions" by default
$handler = new PdoHandler($dbh, 'sessions');
在开始使用 PdoHandler
之前,必须使用 up
方法创建所需的数据库表,可能会抛出 Bayfront\SessionManager\HandlerException
异常。
try {
$handler->up();
} catch (HandlerException $e) {
die($e->getMessage());
}
开始使用Session Manager
创建处理器后,它可以与Session Manager一起使用。此外,还需要将配置数组传递给构造函数。
除非另有说明,否则将使用默认配置,如下所示
use Bayfront\SessionManager\Handlers\LocalHandler;
use Bayfront\SessionManager\Session;
$handler = new LocalHandler('/root_path');
$config = [
'cookie_name' => 'bfm_sess',
'cookie_path' => '/',
'cookie_domain' => '',
'cookie_secure' => true,
'cookie_http_only' => true,
'cookie_same_site' => 'Lax', // None, Lax or Strict
'sess_regenerate_duration' => 300, // 0 to disable
'sess_lifetime' => 3600, // 0 for "until the browser is closed"
'sess_gc_probability' => 1, // 0 to disable garbage collection
'sess_gc_divisor' => 100
];
$session = new Session($handler, $config);
cookie_*
键允许您配置 会话cookie参数。
sess_regenerate_duration
键是自动创建新会话之前的时间间隔(防止会话固定)。设置为 0
以禁用会话自动更新。
sess_lifetime
键是会话有效的秒数。设置为 0
以使会话仅在浏览器关闭时有效。
注意:在使用任何其他方法之前,请确保调用 start 以确保会话已经开始。
公共方法
- start
- startNew
- regenerate
- destroy
- getId
- getLastActive
- getLastRegenerate
- get
- has
- set
- forget
- flash
- getFlash
- hasFlash
- keepFlash
- reflash
start
描述
启动新会话。
参数
- 无
返回
- (self)
示例
$session->start();
startNew
描述
销毁现有会话并启动新会话。
参数
- 无
返回
- (self)
示例
$session->startNew();
regenerate
描述
重新生成新的会话ID。
当 $delete_old_session = TRUE
时,将删除旧的会话文件。
参数
$delete_old_session = false
(bool)
返回
- (self)
示例
$session->regenerate();
destroy
描述
销毁当前会话文件和cookie。
参数
- 无
返回
- (self)
示例
$session->destroy();
getId
描述
返回当前会话ID
参数
- 无
返回
- (string)
示例
echo $session->getId();
getLastActive
描述
返回会话的最后活动时间。
参数
- 无
返回
- (int)
示例
echo $session->getLastActive();
getLastRegenerate
描述
返回会话的最后重新生成时间。
参数
- 无
返回
- (int)
示例
echo $session->getLastRegenerate();
get
描述
以点表示法返回单个 $_SESSION
数组键的值,或整个数组,可选默认值。
参数
$key = NULL
(string): 当NULL
时返回整个数组$default = NULL
(mixed)
返回
- (mixed)
示例
echo $session->get('user.id');
has
描述
检查以点表示法是否存在 $_SESSION
数组键。
参数
$key
(string)
返回
- (bool)
示例
if ($session->has('user.id')) {
// Do something
}
set
描述
使用点符号为 $_SESSION
键设置值。
参数
$key
(string)$value
(混合类型)
返回
- (self)
示例
$session->set('user.id', 5);
forget
描述
使用点符号从 $_SESSION
数组中删除单个键或键数组。
参数
$keys
(字符串|数组)
返回
- (self)
示例
$session->forget('user.id');
flash
描述
使用点符号为闪存数据设置值。
闪存数据可以立即访问,并在后续请求中仍然有效。
参数
$key
(string)$value
(混合类型)
返回
- (self)
示例
$session->flash('status', 'Task was successful');
getFlash
描述
以点符号返回单个闪存数据键的值,或整个数组,可选的默认值。
参数
$key = NULL
(字符串):当NULL
时,返回整个闪存数组$default = NULL
(mixed)
返回
- (self)
示例
echo $session->getFlash('status');
hasFlash
描述
检查点符号中的闪存数据键是否存在。
参数
$key
(string)
返回
- (bool)
示例
if ($session->hasFlash('status')) {
// Do something
}
keepFlash
描述
保留特定闪存数据键,以便在后续请求中使用。
参数
$keys
(数组)
返回
- (self)
示例
$session->keepFlash([
'status'
]);
reflash
描述
保留所有闪存数据键,以便在后续请求中使用。
参数
- 无
返回
- (self)
示例
$session->reflash();