允许多个同时登录到同一帐户的用户数据库结构

问题描述:

我的一个Web应用程序当前缺少的功能是,一次只能在一台计算机上登录一个用户。也就是说,如果用户在其他地方登录,则他的上一个会话将被注销。允许多个同时登录到同一帐户的用户数据库结构

这是因为有我的当前用户表中的列:

user: id, username, hash, salt... cursession 

时,会话ID被放入“cursession”字段和每个页面加载,每个用户登录时对检查数据库。因此,一次只能有一个“会话”处于活动状态。

  1. 当前表结构和方法是否安全和标准?这个系统非常简单,我没有专业经验。
  2. 什么将允许多个同时登录?我只是想用更多的userid-cursession关系添加一个“sessions”表,但是做这个的标准方法是什么?

我建议您将当前登录的用户标识放在用户的会话中(作为会话变量),并从表中删除cursession字段。您不需要重新创建会话处理,因为PHP已经内置了它。

这样用户可以一次登录多台计算机。会话变量也是安全的,因为它们不被浏览器操纵。浏览器中唯一保存的是标识当前会话的会话标识,所有其他数据都存储在服务器端。如果用户更改他的浏览器cookie,唯一会发生的事情是他将被注销(开始一个空会话),因此他不能强迫自己以其他人身份登录。

+0

对不起,但我不清楚这一点。你的意思是简单地将用户标识存储在会话cookie中吗?如果是这样,你如何确保cookie是真的?编辑:没关系,我知道了。只需使用$ _SESSION ['userid'] = x – phsource 2010-09-22 18:07:27