问题标签 [session-set-save-handler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PDO 准备静默失败
我正在试验 PHP session_set_save_handler
,我想使用 PDO 连接来存储会话数据。
我有这个函数作为写操作的回调:
前两条日志消息总是显示出来,但紧随其后的第三条$stmt = $GLOBALS['db']->prepare($sql)
从未出现在日志文件中,也没有异常的痕迹。
会话数据库表保持为空。
来自回调的日志消息_close
始终存在。
这是我连接到数据库的方式:
我有 PHP 5.2.10。
我试图简单地运行$GLOBALS['db']->exec($sql)
“手动准备”的$sql
内容,但它仍然默默地失败了。查询本身没问题,我可以通过 db 控制台执行它。
编辑:
在 VolkerK 确定问题后,我发现这篇文章解释了这种奇怪现象背后的原因。也许它也可以为其他人提供信息。
第二次编辑:
最不痛苦、最神奇的解决方案是我必须将以下函数调用添加到我的前端控制器(主 index.php)文件的最后:
mysqli - 使用数据库中保存的会话时 PHP mysqli->real_escape_string
好的,我希望在发布这个问题之前我已经很好地列出了所有内容,因为我在这里和那里找到了一些解决方案,但对我的问题没有真正的答案。
1:我使用的是与mysqli的单例MySQL连接,而不是使用存储过程;
2:我在网上找到了解释session_set_save_handler的代码,并将其嵌入为一个名为MySqlSessionStore的类;
3:在我的数据库类中有这个公共函数:
和$this->_link = new mysqli($host, $user, $password, $database)
4:$db = MySQL::getInstance(array(DB_SERVER, DB_USER, DB_PASS, DB_NAME));
这就是我调用静态数据库函数的方式(这里没什么特别的)
问题:一切正常,直到我取消注释$id = $db->escapeStringForDB($id);
,然后发生以下错误:
在非对象上调用成员函数 real_escape_string()
MySqlSessionStore 中的示例代码:
其他问题,备注:
- 我正在使用 session_regenerate_id() 但显然这需要使用 session_set_save_handler 删除;
- 我到底应该放在
session_write_close();
哪里?我已经在我的 db 类的析构函数中得到了它,但也许这不是要走的路; - 我在其他项目上使用它并没有伤害,但这里会话处理程序的行为似乎不同并且让我感到困惑:)
在此先感谢您,如果您需要更多信息,我很乐意提供。
php - PHP:会话死亡更改数据库
我正在为一个项目使用 PHP。我已将会话寿命设置为 0,以便当用户关闭浏览器时,会话终止并且他/她被注销。但是,我在数据库中有一个状态变量,它存储告诉我用户是否登录的信息。我用它来通知其他用户特定用户的状态。
当会话结束时,我如何调用一个函数来改变我的数据库中的值?我看过覆盖 session_set_save_handler()。但这需要我重写整个函数并定义我自己的会话。是否有一个函数可以用来更改我的数据库变量?
有没有更好的方法来实现我想要实现的目标?
谢谢
编辑:对于那些和我一样情况的人,我按照尼克的建议做了。我有一个日志,可以跟踪每个用户访问的每个页面。为了检查用户是否在线,我检查我的数据库以检查是否设置了登录变量,然后仔细检查最近是否有一些活动以了解用户是否实际在线。
php - session_set_save_handler - 为什么这段代码不起作用?
我一直在尝试将 PHP 会话数据保存在 MySQL 数据库中,但无法正常工作。
举个简单的例子,这里的代码应该在每次访问时增加一个计数器。我看过其他示例等,但有人可以告诉我为什么这段代码不起作用吗?(Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 MySQL客户端版本:5.0.51a)
这是mysql数据库表:
和 PHP 代码(只需插入您的数据库凭据):
在此先感谢您的帮助。
如果您注释掉 session_set_save_handler 代码行,它可以正常工作(它会增加)。但是使用保存处理程序却没有。
php - 什么样的序列化使用PHP函数session_set_save_handler的write函数?
我使用 session_set_save_handler()。它工作正常。但是,有时我需要更改用户的会话数据。我只是希望传递给 write 函数的会话数据是在内部创建的,如下所示:
但他们不是。它们的格式与简单的 PHP 序列化数据略有不同:
任何人都知道内部使用哪种序列化来序列化 $_SESSION 数据以用于 session_set_save_handler() 中的写入函数?或者更好的是,如果有一些我可以用来处理这些数据的反序列化和序列化函数?
php - 在 sql 中存储会话 (session_set_save_handler())
所以,我正在制作一个登录系统,用户应该登录超过 24 分钟。这就是为什么我决定将会话存储在我的数据库中。
我使用了这个函数:(我建立了自己的 sql 连接 -> sqlConnectionConfig.php)
sessions.php 文件(我在 php.net 上找到了这段代码。):
我的 admin/index.php 和 admin/admin.php 文件都具有相同的 session_start():
index.php 包含表单并通过 post 将登录数据发送到 admin.php。
问题是:它会在 24 分钟后注销。但我不知道为什么,我的数据库成功存储了会话。
php - 数据库的 session_set_save_handler 类不工作
在学习了一些教程之后,我正在使用 session_set_save_handler 类并尝试将会话数据存储在 mysql 数据库中。
我已经包含并实例化了我的类文件:
我的类文件的代码是:
但我无法弄清楚为什么它不起作用。
编辑:不工作,我的意思是没有任何东西被添加到数据库中。
php - php/mongodb 会话管理器,session_set_save_handler() 问题
我正在使用一个 PHP 会话管理器类来处理 MongoDB 中的用户会话,但它不起作用,我终生无法弄清楚原因。会话变量设置成功,但不会持续到其他页面。与 MongoDB 的连接不是问题。我已经确定这个问题与 . session_set_save_handler
,因为如果我注释掉这个函数,原生 PHP 会话处理工作正常。
在此先感谢您的帮助。
php - session_set_save_handler 不工作
我一直在尝试使用 session_set_save_handler() 设置保存会话,但我不知道出了什么问题,我有所有可调用的函数,但是出了点问题,在这里我发布了我的代码。顺便说一句,我在 WP 工作。
因此,出于某种原因,如果:
它正在返回无法设置会话处理程序。谢谢您的帮助!:D
php - session_set_save_handler 并写在 php 5.4.12
我正在使用session_set_save_handler()
将会话保存到数据库。
从 php v.5.3 迁移到 v.5.4 后,该write()
函数根本没有被调用;无论是在调用session_write_close()
函数时,还是在脚本终止时(之前它工作正常,并且没有对代码进行任何更改)。和函数仍照常调用read()
。
我知道 php 5.4 中有一些与机制相关的变化。有没有人有类似的问题或知道发生了什么变化?open()
close()
session_set_save_handler()
用法:
对不起,代码中的一些调试。