限制会话只有一个用户登录实例


Restricting sessions to only 1 instance of a user login

我有一个用户登录系统,它在会话中工作,当用户登录一个会话变量的用户填充了他/她的用户名,然后她加载的每个页面检查这个会话,如果它没有填充,那么页面被重定向到登录页面。注销后会话将被销毁。

但这仍然允许用户同时打开2个不同的浏览器并登录。我想阻止这种情况,这样,如果一个用户登录,然后试图登录使用不同的浏览器或pc,他们得到一个错误,说用户已经登录。

所以我的第一个想法是使用数据库写,但我怎么知道取消设置该值,如果浏览器关闭?

我所有的页面都是php的,我使用ajax和php脚本来更新动态内容。

那么最好的方法是什么呢?

他们得到一个错误,说用户已经登录。

这是错误的做法,会导致糟糕的用户体验。

让它相反:让后者进入,但让前一个注销。您只需要在用户表中存储当前会话ID。如果不匹配-要求登录。

如果在数据库中发现用户已经登录,只需询问他/她是否想继续并覆盖旧的会话信息。另一种方法可能是在数据库信息中添加时间票(例如插入时间),并检查插入时间后经过了多长时间。

如果我正确理解了你的问题,我认为你可以使用cookie。一旦用户登录,您可以创建一个cookie,并设置浏览器会话时间的过期。在从DB中获取数据之前,需要检查cookie是否存在。

我将创建另一个会话变量来检查浏览器类型,如果它是不同的调用视图方法来输出您所说的