问题标签 [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.

0 投票
0 回答
369 浏览

php - session_set_save_handler gc($maxlifetime) 工作概念

php.net 手册的session_set_save_handler示例是基于文件的。我试图为mysql实现它。

我在 Windows 中使用uniserver 。我的错误显示设置是开发环境。

我的问题是我无法让垃圾收集功能自动工作。我没有收到错误/警告。我所有的相关代码都在下面。

我的意思是:如果我$handler->gc($maxlifetime);在会话测试后在 index.php 中使用它,它会起作用并删除过期的行。

如果我不在$handler->gc($maxlifetime);index.php 中使用,则会保留过期的行。

我的问题

q1 - 我应该$handler->gc($maxlifetime);在 index.php 中使用吗?

q2 - 如果对 q1 的回答是肯定的,为什么回调函数有一个gc函数。

q3$handler->gc($maxlifetime); - 如果对 q1 的回答是否定的,为什么在我关闭浏览器(ie11)、刷新 index.php 并检查我的 mysql 会话表后,我的过期行没有被删除(以防我在 index.php 中没有)?请注意,这$maxlifetime是 1(秒)。

谢谢,最好的问候

我的 index.php

MySessionHandler 类

会话表的相关 SQL

0 投票
1 回答
167 浏览

php - 为什么使用 session_set_save_handler 会丢失会话数据?

我正在将 PHP4 应用程序从旧版本的 CentOS 迁移到新版本。

我正在使用 session_set_save_handler 并且由于某种原因在调用以下回调时,

写(字符串 $sessionId,字符串 $data)

$sessionId 已设置,但 $data 为空。

我的第一个猜测是缺少WDDX模块,但我已经激活它并且它正确显示在 info.php 页面中。

您认为这可能是 xml 序列化的问题吗?关于如何访问某些日志文件中的错误消息以找出真正原因的任何想法?

先感谢您。

0 投票
2 回答
2589 浏览

php - 自定义 session_handler 被 php7 破坏(session_set_save_handler)

更新到 PHP7 后,我的应用程序会话处理出现了一些问题。

这似乎不是一个大问题,但 PHP 每次都会抛出这个错误:

session_handler 没什么特别的。它将 JSON 化的 sessiondata 存储到 redis 等。

欢迎任何帮助。

0 投票
1 回答
523 浏览

php - 为什么我不能在 __destruct() 方法中设置会话变量?

我尝试在 __destruct() 方法中设置会话变量。方法 __destruct() 正在运行,但未设置会话变量。同时,__contruct() 中的会话或其他方法(例如 test())按预期工作。

更新后的版本。现在我尝试使用原生 PHP Session 和 Symfony 组件,它们都不能在 __destruct() 方法中工作。

0 投票
1 回答
105 浏览

php - 会话被销毁时调用函数/处理程序

我用 PHP 编写了一个带有用户身份验证的网站。我为此使用了会话。当用户登录时,会在数据库中设置一个标志,当他注销时,该标志会被重置。这可以防止一个用户多次登录网站。

一切正常,但是当用户忘记注销时,会话会在一段时间后失效。当用户现在尝试重新登录时,他将被阻止登录,因为该标志仍然设置。

当会话变得无效/被破坏时,我需要一个将被调用的处理程序/函数。我怎样才能做到这一点?

我知道有一个名为 session_set_save_handler 的函数,但我只需要 destroy 函数。不需要其他函数,我可以访问该函数中的 $_SESSION 变量吗?因为在这个变量中保存了用户标识,需要重置其标志。

感谢帮助。

0 投票
1 回答
1049 浏览

php - Session_set_save_handler 未写入数据库

我目前正在学习 php 并尝试将会话数据写入我的数据库但没有成功。我有一个 Apache24、PHP 7 环境和 Postgresql 数据库的设置。当我在我的其他 PHP 文件中实例化sessionhandling类 ( $sess = new sessionhandling) 时,没有任何内容写入数据库。但是,当我将变量传递给并调用写入函数 ( $sess->write) 时,数据将写入数据库。

(希望这不是提出的任何其他问题的重复。在 Stackoverflow 和 Google 上进行了大量搜索,但没有找到任何解决我挑战的答案)

我的会话处理程序代码如下:

当我删除 ' implements SessionHandlerInterface' sessionhandling 类并从 open 函数中删除参数 $save_path, $id 时,我收到以下错误:“警告:session_start():无法读取会话数据:C:\Users 中的用户(路径:) \Public\Server\Apache24\htdocs\Userstories\sessionhandling.php 在第 19 行"

使用 DB 进行会话处理时是否需要定义 $save_path?如果是这样, $save_path 应该是什么?

非常感谢任何有关如何让我的会话处理程序写入 DB 的建议。

0 投票
2 回答
163 浏览

php - gcloud 上未调用 session_set_save_handler 写入函数

我在标准模式下使用 php 在谷歌云平台上运行应用程序。我用来session_set_save_handler将会话存储在 mysql 数据库中。

.php 文件

它在我的本地系统(MAMP)上运行良好,但在谷歌上没有调用 write 函数。其他功能正常。任何想法?

谢谢。