ericmann / wp-session-manager
WordPress 的原型会话管理。
Requires
- php: >=7.1
- ericmann/sessionz: ^0.3
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: ^3.4
README
WordPress 的会话管理。
描述
将 $_SESSION
功能添加到 WordPress 中,在需要时利用数据库来支持多服务器安装。
每个访问者,无论是登录还是未登录,都会被分配一个会话。默认情况下,会话数据将存储在 WordPress 数据库中,以处理负载均衡问题,如果使用多个应用服务器。此外,会话集合也将存储在 内存 中,以便在 WordPress 中快速使用。
存储在数据库中的会话数据可以加密以提供更好的安全性。
安装
手动安装
- 将整个
/wp-session-manager
文件夹上传到/wp-content/plugins/
目录。 - 通过 WordPress 的 '插件' 菜单激活插件。
- 在您的代码中使用
$_SESSION
。
常见问题解答
如何添加会话变量?
只需使用超级全局 $_SESSION
数组即可。
$_SESSION['user_name'] = 'User Name'; // A string
$_SESSION['user_contact'] = array( 'email' => 'user@name.com' ); // An array
$_SESSION['user_obj'] = new WP_User( 1 ); // An object
会话变量存在多长时间?
这取决于您 PHP 安装的配置。请阅读 PHP 手册 了解更多配置细节。
我能否不创建新表就使用此插件?
绝对可以!从版本 2.0 开始,此插件将为 WordPress 创建一个新表来存储会话数据。通常,与使用选项进行数据存储相比,这从长远来看效率更高。但是,如果您的系统不允许创建表,请将以下内容添加到 wp-config.php
中,以使用选项表
define( 'WP_SESSION_USE_OPTIONS', true );
我得到一个错误说我的 PHP 版本过时了。为什么?
PHP 5.6 已于 2018 年 12 月被指定为生命周期结束,并停止接收安全补丁。PHP 7.0 也在 2018 年 12 月被标记为生命周期结束。WP Session Manager 支持的最低 PHP 版本是 PHP 7.1。
如果您的服务器运行的是较旧的 PHP 版本,则会话系统 将不会工作! 为了避免触发 PHP 错误,插件将输出此通知以升级并静默禁用自己。您不会看到 PHP 错误,但您也不会获得会话支持。
联系您的托管提供商或系统管理员以升级您的服务器。
我得到一个错误说另一个插件正在设置会话。我该怎么办?
WP Session Manager 用自己的自定义处理程序覆盖了 PHP 的默认会话实现。不幸的是,如果我们已经激活了一个会话,我们无法交换一个新的处理程序。此插件通过 plugins_loaded
钩子尽可能早地设置事情,但如果您的其他插件(或主题)中有代码尝试在 WP Session Manager 加载之前调用 session_start()
,则自定义处理程序将根本不起作用。
检查您的其他插件,并尝试找到干扰的那个。然后,联系开发者解释冲突,看看他们是否有修复方案。
屏幕截图
无
更新日志
4.2.0
- 更新:将捐赠链接从 PayPal 更改为 Patreon。
- 修复:禁用 cron 运行的初始化程序。
4.1.1
- 修复:使用
function_exists()
检查来防御性保护已弃用的函数,以避免与其他系统发生冲突。 - 修复:如果会话被禁用,则禁用初始化程序。
4.1.0
- 修复:添加一些防御措施,以确保在加载系统之前,最终用户正在运行正确的PHP版本。
- 修复:消除另一种插件或主题首先创建会话的竞争条件。
- 修复:安排一个cron任务来自动删除过期的会话。
4.0.0
- 新功能:添加一个基于对象缓存的处理程序,如果可用,利用Redis或Memcached以实现更快的查询。
- 新功能:采用Contributor Covenant(v1.4)作为项目的官方行为准则。
- 更新:由于版本过时而提高最低PHP要求。
- 修复:在数据库表存在之前创建会话的竞争条件。
- 修复:在从数据库中删除会话时,确保全局变量
$wpdb
尚未设置时的竞争条件。 - 修复:从存储的数据表中删除不必要的整数会话ID。
3.0.4
- 更新:添加对
wp_install
钩子的支持,以立即创建自定义表。
3.0.3
- 修复:修复readme中的代码块。
- 修复:在另一个插件已启动会话的情况下,采用更防御性的方法启动会话。
3.0.2
- 修复:为已弃用的
WP_Session
对象添加正确的数组访问支持。
3.0.1
- 更新:拉取Sessionz修复。
3.0.0
- 更新:重构以使用Sessionz。
- 更新:如果设置了
WP_SESSION_ENC_KEY
,则添加静态加密。
2.0.2
- 修复:将数据存储迁移连接到会话初始化钩子,以确保其运行。
- 修复:在所有数据被删除时清理会话。
2.0.1
- 修复:修复未返回实际存储会话数据的数据存储。
2.0.0
- 更新:使用表而不是选项来存储会话数据。
1.2.2
- 更新:使用正则表达式模式匹配来确保会话ID在进入/离开数据库时相同,以解决编码差异。
1.2.1
- 更新:添加对
setcookie
参数的额外过滤器。 - 更新:公开会话ID。
- 修复:更好地处理格式不正确或损坏的会话名称。
1.2.0
- 更新:增强插件组织。
- 更新:添加WP_CLI对会话管理的支持。
- 更新:添加Composer定义。
- 修复:拆分旧会话的删除,以防止在负载下查询超时。
1.1.2
- 修复一个竞争条件,其中会话过期选项可能意外设置为自动加载。
- 将垃圾收集程序运行时间设置为每小时一次,以减轻大型网站上长时间运行的任务。
1.1.1
- 修复在实例化时未正确设置会话过期的问题。
1.1
- 实现Recursive_ArrayAccess以提供多维数组支持。
- 会话数据的更好过期。
- 实现垃圾收集以保持数据库清洁。
1.0.2
- 切换到对象持久性而不是转瞬即逝。
1.0.1
- 更改实现以避免使用全局变量(仍然注册以方便使用)。
1.0
- 第一个版本
升级通知
4.0 本版本需要PHP 7.1或更高版本。
3.0 本版本需要PHP 5.6或更高版本,并使用Composer驱动的自动加载来整合Sessionz以实现透明的会话管理。
2.0
本版本将为存储会话数据创建一个新的数据库表!如果您不希望有这样的表,请将wp-config.php
中的WP_SESSION_USE_OPTIONS
常量设置为true
!升级将删除所有现有会话!
1.0
第一个版本
更多信息
贡献者: ericmann
捐赠链接: https://www.patreon.com/user?u=16402577
标签: 会话
至少需要 4.7
测试到 5.1.1
需要PHP 7.1
稳定标签 4.2.0
许可: GPLv2或更高版本
许可URI: https://gnu.ac.cn/licenses/gpl-2.0.html