pantheon-systems / wp-native-php-sessions
WordPress数据库中存储的本地PHP会话。
Requires (Dev)
- dev-main
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.0
- v0.9.0
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.9
- v0.6.8
- v0.6.7
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- dev-rename-catalog-info-20240923
- dev-release-1.4.3
- dev-develop
- dev-CMSP-744-Sessions-Multisite
- dev-TEST-FORK-PR-278
- dev-readme-contrib-fixup
- dev-composer-v
- dev-BUGS-6563
- dev-fixup-develop
- dev-develop-saved
- dev-behat-response-headers
- dev-pwu-6-tests--rebase
This package is auto-updated.
Last update: 2024-09-23 20:32:03 UTC
README
贡献者: getpantheon, outlandish josh, mpvanwinkle77, danielbachhuber, andrew.taylor, jazzs3quence, stovak, jspellman, rwagner00
标签: comments, sessions
最低要求 4.7
测试到 6.3
稳定标签 1.4.3
需要PHP 5.4
许可证: GPLv2或更高版本
许可证URI: https://gnu.ac.cn/licenses/gpl-2.0.html
使用本地PHP会话并保持水平扩展。通过先进技术享受更美好的生活。
描述
WordPress核心不使用PHP会话,但有时您的用例、插件或主题可能需要它们。
此插件实现了PHP的原生会话处理器,由WordPress数据库支持。这允许插件、主题和自定义代码在PHP默认的临时文件存储无法正常工作的分布式环境中安全地使用PHP $_SESSION
。
请注意,如果您想贡献,主要开发是在GitHub上
https://github.com/pantheon-systems/wp-native-php-sessions
安装
- 上传到
/wp-content/plugins/
目录 - 通过WordPress的“插件”菜单激活插件
这就完成了!
配置
默认情况下,会话有效期设置为0,即直到浏览器关闭。
要覆盖此设置,请在WordPress Native PHP Sessions插件加载之前使用pantheon_session_expiration
过滤器。例如,一个小型必须使用插件(即mu-plugin)可以包含
<?php
function my_session_expiration_override() {
return 60*60*4; // 4 hours
}
add_filter( 'pantheon_session_expiration', 'my_session_expiration_override' );
CLI命令
wp pantheon session add-index
从1.4.0版本开始添加。如果您的插件安装是在1.2.2版本中添加主键索引到会话表之前发生的,则应运行此命令。如果这是这种情况,您在访问任何管理页面时将自动收到通知。如果没有消息,则您的版本可以正常使用。请注意,此命令是非破坏性的,将创建一个新表,并将现有表保留在备份状态下,直到您已验证升级按预期工作。
wp pantheon session primary-key-finalize
从1.4.0版本开始添加。如果您已运行add-index
命令并已验证新表正常工作,则运行primary-key-finalize
命令将对数据库进行清理并删除备份表。
wp pantheon session primary-key-revert
从1.4.0版本开始添加。如果您已运行add-index
命令,但出现了意外情况,只需运行primary-key-revert
命令,备份表将立即返回到活动状态。
WordPress多站点
从1.4.2版本开始,add-index
、primary-key-add
和primary-key-revert
命令完全兼容多站点。
贡献
请参阅CONTRIBUTING.md了解如何贡献信息。
安全策略
报告安全漏洞
请通过Patchstack 漏洞披露计划报告在 Native PHP Sessions 插件的源代码中发现的任何安全漏洞。Patchstack 团队将协助您进行验证、CVE 分配,并通知此插件的开发者。
常见问题解答
为什么不使用其他会话插件呢?
该插件实现了内置的 PHP 会话处理函数,而不是引入任何自定义内容。这样,您可以在代码中使用内置的语言函数,如$_SESSION
超级全局变量和session_start()
。其他所有内容都将“自动工作”。
为什么要在数据库中存储它们呢?
PHP 的默认回退功能是允许会话存储在临时文件中。这是大多数调用会话的代码默认使用的,在简单用例中它工作得很好,这就是为什么许多插件都这样做的原因。
然而,如果您打算扩展您的应用程序,本地临时文件是一个危险的选择。它们不会在不同应用程序实例之间共享,从而导致难以调试的异常行为。通过将它们存储在数据库中,会话状态将在所有应用程序实例之间共享。
故障排除
如果您看到类似于“致命错误:session_start():初始化存储模块失败”或“警告:ini_set():会话正在激活”的错误,那么您可能有一个插件在 WP Native PHP Sessions 加载之前启动了会话。
要修复此问题,请在wp-content/mu-plugins/000-loader.php
创建一个新文件,并包含以下内容:
<?php
require_once WP_PLUGIN_DIR . '/wp-native-php-sessions/pantheon-sessions.php';
此 mu 插件将在所有其他插件之前加载 WP Native PHP Sessions,同时让您仍然可以使用 WordPress 插件更新器来保持插件更新。
升级通知
1.4.0
添加了一个 WP-CLI 命令,如果会话表中尚未存在索引,则添加索引。如果您在版本 1.2.2 之前安装了此插件,则可能需要运行此命令。但是,无论安装时的版本如何,如果您的数据库表缺少索引,则会在您的管理仪表板中显示一条通知。如果没有任何通知,则无需采取任何操作。
变更日志
1.4.3 (2023 年 11 月 13 日)
- 修复了在单站安装上运行
pantheon session add-index
命令时出现的 PHP 警告。[#285]
1.4.2 (2023 年 11 月 8 日)
- 修复了与
pantheon session add-index
PHP 警告相关的问题。[#276] - 修复了建议的 WP CLI 命令中的语法问题。[#278]
- 使
wp pantheon session add-index
、wp pantheon session primary-key-finalize
和wp pantheon session primary-key-revert
完全支持多站点。[#275]
1.4.1 (2023 年 10 月 23 日)
- 修复了
pantheon session add-index
命令在 WP 多站点上无法正常工作的问题。[#270] - 使 1.4.0 中添加的通知可忽略(存储在用户元数据中)并在多站点中隐藏(即将推出以遍历网络上的所有站点)[#271]
1.4.0 (2023 年 10 月 17 日)
- 为没有主列(id)的用户添加了新的 CLI 命令,用于向
pantheon_sessions
表添加主列。[#265] - 为需要运行新命令的用户添加了仪表板警报。
- 更新 Pantheon WP 编码标准至 2.0 [#264]
- 8.3 兼容性和代码质量更新
1.3.6 (2023年6月1日)
- 修复 PHP 8.2 弃用动态属性错误 [#251] (感谢 @miguelaxcar)
- 更新 CONTRIBUTING.md [#252].
- 更新 headers 已发送时的错误信息 [#249].
- 添加 pantheon-wp-coding-standards [#247].
1.3.5 (2023年4月7日)
- 将 yoast/phpunit-polyfills 从 1.0.4 升级至 1.0.5 [#245].
- 提升测试版本
1.3.4 (2023年2月7日)
- 为 $session->get_data() 添加回退 [[#237(#237)]] (在 WordPress.org 上报告 on WordPress.org)
- 更新 CODEOWNERS 文件 [#239]
- 修复
composer.json
文件中的 GPL 许可证 [#236] - 将 grunt 从 1.5.3 升级至 1.6.1 [#235]
1.3.3 (2023年1月25日)
- 在 pantheon-sessions.php 中更新版本 [#234].
1.3.2 (2023年1月25日)
- PHP 8.2 兼容性 [#232].
- 将 dealerdirect/phpcodesniffer-composer-installer 从 0.7.2 升级至 1.0.0 [#229].
- 更新 lint 和 test-behat 作业的图像 [#228].
1.3.1 (2022年12月5日)
1.3.0 (2022年11月28日)
- 添加 CONTRIBUTING.MD 和 GitHub 动作以自动化部署到 wp.org. [#219]
1.2.5 (2022年10月28日)
- 在需要的地方添加
#[ReturnTypeWillChange]
以在 PHP 8.1 中静默弃用警告 [#216].
1.2.4 (2021年9月14日)
- 将新会话表的数据块大小从 64k 增加到 16M;如果现有表想要应用此更改,则需要手动修改列 [#193].
1.2.3 (2021年4月9日)
- 在使用查询之前将表名分配给变量 [#188].
1.2.2 (2021年3月29日)
- 为支持复制包括自动递增的
id
列 [#187].
1.2.1 (2020年9月17日)
- 插件文本域需要与 WordPress.org 的 slug 相同 [#169].
1.2.0 (2020年5月18日)
- 当 WP-CLI 运行时避免使用 cookies 会话[#154].
1.1.0(2020年4月23日)
- 在执行 cron 时避免初始化 PHP 会话[#149].
1.0.0(2020年3月2日)
- 插件稳定。
0.9.0(2019年10月14日)
- 将会话回调逻辑重构为
Session_Handler
抽象,修复 PHP 7.3 中的 notice[#135].
0.8.1(2019年8月19日)
- 修复了
get_client_ip_server()
中对 'X-Forwarded-For' 报头的处理[#126].
0.8.0(2019年8月13日)
- 尊重客户端 IP 地址的各种
HTTP_*
来源[#122].
0.7.0(2019年4月3日)
- 添加安全检查,当发现缺少
$wpdb
时将其恢复。
0.6.9(2018年5月15日)
- 确保
_pantheon_session_destroy()
使用返回值。
0.6.8(2018年5月4日)
- 触发错误时,改为使用
E_USER_WARNING
而不是E_WARNING
。
0.6.7(2018年4月26日)
- 当
WP_INSTALLING
定义时禁用插件加载,因为会话表创建会破坏安装过程。
0.6.6(2018年3月8日)
- 当 WP-CLI 运行时恢复会话实例化,因为不这样做会导致其他问题。
0.6.5(2018年2月6日)
- 当
defined( 'WP_CLI' ) && WP_CLI
定义时禁用会话实例化,因为会话在 CLI 上不可用。
0.6.4(2017年10月10日)
- 当插件无法将会话写入数据库时触发 PHP 错误。
0.6.3(2017年9月29日)
- 在完全无法生成会话时返回 false。
0.6.2(2017年6月6日)
- 在用户登录和注销时同步会话用户 ID。
0.6.1(2017年5月25日)
- 错误修复:防止 warning
session_write_close()
需要正好 0 个参数,但给定了 1 个。
0.6.0(2016年11月23日)
- 错误修复:通过在 WordPress 的
shutdown
动作中运行,在$wpdb
自我析构之前,防止session_write_close()
中的 PHP 致命错误。 - 错误修复:在会话表中存储实际用户 ID,而不是
(bool) $user_id
。
0.5
- 兼容 PHP 7。
- 添加
pantheon_session_expiration
过滤器以修改会话过期值。
0.4
- 调整
session_id()
的行为以提高兼容性。 - 使用超全局变量 REQUEST_TIME 而不是
time()
。
0.3
- 修复与 WordPress 插件加载顺序相关的问题。
0.1
- 首次发布。