在任何地方注销,我登录的其他地方

时间:2010-09-22 18:39:05

标签: php mysql authentication session

我目前使用PHP会话作为我的用户登录系统的基础,并成功登录设置$ _SESSION ['userid']。这允许用户从多台计算机登录到同一帐户。

但是,我想实现以下功能:

  1. 在任何地方注销,类似于Stack Overflow。
  2. 查看其他人登录的位置。
  3. 两者都可能需要的不仅仅是会话变量,而且我愿意将更多信息放入数据库来完成这些。做上述事情的标准方法是什么?

2 个答案:

答案 0 :(得分:2)

创建一个新的数据库表来存储会话,然后直接在$_SESSION中存储信息,而不是存储引用新会话表中一行的ID。此表可以包含IP地址,用户名和上次活动时间等信息。

您的应用程序应根据$_SESSION中的内容检查会话表,因此当您删除表中特定用户的所有行时,无论身在何处,每个会话都将失效。您还可以查询属于特定用户的所有行,以便显示他们有活动会话的位置。

您必须开始考虑处理用户离开会话的位置而不显式注销 - 可能是每小时或每天运行的预定作业,清除在某段时间内没有任何活动的会话行时间。

答案 1 :(得分:0)

如果要销毁会话和注销,可以使用session_destroy()功能。要删除特定的会话变量,您可以这样做:

unset($_SESSION['userid']);
session_destroy();