PHP实时会话控制。怎么样?

时间:2015-01-26 20:04:50

标签: php session

如何进行实时PHP会话控制?我的意思是,当用户登录时,我创建了一个PHP会话($_SESSION[])并将其存储在一个表(MySQL)中,但是如何判断用户何时注销?我可以明显地检测到用户何时注销并销毁会话但如果用户从未点击注销会发生什么事情?如何在会话结束时检测到什么?
谢谢!

2 个答案:

答案 0 :(得分:1)

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

http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-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');
?>

使用最后一个数组,您可以定义清理会话的功能。

答案 1 :(得分:-1)

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

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

但如果您必须知道用户何时断开系统连接,则无法提供帮助。