PHP实时会话控件。怎么用?

PHP实时会话控件。怎么用?,php,session,Php,Session,如何创建实时PHP会话控件?我的意思是,当用户登录时,我会创建一个PHP会话($\u session[])并将其存储在一个表(MySQL)中,但我如何判断用户何时注销?显然,我可以检测到用户何时注销并销毁会话,但是如果用户从未单击“注销”会发生什么情况?我如何检测会话何时关闭? 谢谢 这是一个常见的问题。当用户未单击注销按钮时,会话将再次可用。通常,垃圾收集器会在定义的时间后清理会话 下面是一个关于如何构建MySQL会话处理程序的好教程。所以让PHP来管理这部分 重要的部分在这里: <?

如何创建实时PHP会话控件?我的意思是,当用户登录时,我会创建一个PHP会话(
$\u session[]
)并将其存储在一个表(MySQL)中,但我如何判断用户何时注销?显然,我可以检测到用户何时注销并销毁会话,但是如果用户从未单击“注销”会发生什么情况?我如何检测会话何时关闭?

谢谢

这是一个常见的问题。当用户未单击注销按钮时,会话将再次可用。通常,垃圾收集器会在定义的时间后清理会话

下面是一个关于如何构建MySQL会话处理程序的好教程。所以让PHP来管理这部分

重要的部分在这里:

<?php
// set our custom session functions.
session_set_save_handler(array($this, 'open'), 
array($this, 'close'), 
array($this, 'read'), 
array($this, 'write'), 
array($this, 'destroy'), 
array($this, 'gc'));

// This line prevents unexpected effects
//when using objects as save handlers.
register_shutdown_function('session_write_close');
?>


在最后一个数组中,您定义了清理会话的函数。

我遇到了这个问题,但我通过创建另一个id解决了这个问题,因此我不必使用会话id(我认为它不安全),因此每次用户登录我的系统时,他都会获得另一个id,我的函数检查用户是否被授权,检查数据库上的用户ID,该ID也保存在我的会话中,以检查它是否等于我的数据库上的ID

我认为这是另一个安全措施,以确保我只有一个用户登录的实例,我没有这个问题,直到现在


但是,如果您必须知道用户何时断开了与您系统的连接,这将无济于事。

您可以在用户每次在您的网站上进行交互时更新您的表,并将那些未作为注销者的人带走。您不需要这样做。要么使用每n秒自动刷新一次的隐藏帧,要么使用ajax使“心跳”或其他一些处理图像的方法,要么使用某个会话在定义的超时(默认为24分钟)后自动过期。会话cookie还可以配置为在浏览器窗口关闭时过期,而不是在上次请求后过期。您不能。没有100%可靠的方法来确定/检测用户何时离开您的站点、何时关闭站点所在的选项卡/窗口等。。充其量,您可以在会话上设置一个相对较短的到期时间,只需说“用户最后一次出现是在最后X分钟内”。