bayfrontmedia/session-manager

一个不依赖框架的PHP库,用于使用多种存储选项管理会话。

v3.0.0 2023-04-26 03:23 UTC

This package is auto-updated.

Last update: 2024-08-26 06:19:53 UTC


README

一个不依赖框架的PHP库,用于使用多种存储选项管理会话。

许可证

本项目为开源项目,可在MIT许可证下获得。

作者

Bayfront Media

要求

  • 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 以使会话仅在浏览器关闭时有效。

sess_gc_* 键定义了垃圾回收的 概率除数

注意:在使用任何其他方法之前,请确保调用 start 以确保会话已经开始。

公共方法

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();