我的脚本中实现了一个php登录系统。如果数据库中存在现有会话,我将如何制作拒绝用户登录的脚本?
例如,
用户1登录系统>登录已接受 用户2使用与用户1相同的帐户登录系统。拒绝,因为存在另一个会话。
这就是我希望它的工作方式。
感谢。
答案 0 :(得分:1)
将您的sessionId存储在您的数据库中,如果上次访问时间是最近的,则拒绝具有不同sessionID的用户的登录尝试(通过查找上次登录时间与当前时间之间的差异来计算)。注销时的清除ID
答案 1 :(得分:0)
您的users表中应该有一个名为logged_in的新字段。验证时,请检查此字段的值。
如果是0 / false,请让用户登录并将logged_in字段设置为1 / true。
否则,如果logged_in字段为1 / true,则不要让第二个用户登录。
注销时不要忘记将logged_in字段设置为0 / false。
答案 2 :(得分:0)
好问题。
如果您正在引用PHP会话:您可以将会话ID(和上次访问时间)存储在数据库中,并拒绝具有不同会话ID的用户的登录尝试(如果最后访问时间)太近了(比如,在过去20分钟内)。当然,在注销时清除ID。
但请注意,如果用户关闭浏览器而未注销然后重新打开,则可能会被锁定一段时间(上面20分钟或您决定的任何时间间隔),因为他们不会匹配的会话cookie了。
如果您要引用数据库会话:您必须在此link中配置Mysql DB中的Setting Account Resource Limits
。但问题是,帐户与服务器同时连接的数量仅在MySQL 5.0.3中可用。
如果您要参考实时制作,那么您可以使用COMET Programming将数据推送到浏览器,而浏览器不会明确请求它。
答案 3 :(得分:0)
为此
您必须在数据库中存储session
个值。然后当其他用户登录相同的细节时。你可以从已经有一个用户在线的数据库中检查它,并且具有相同的登录详细信息
答案 4 :(得分:0)
我会将另一个字段放入数据库中,例如last_seen。每次登录用户都会产生请求 - 只需将当前日期放入该字段。
当有人试图登录时 - 只需检查用户在网站上看到多长时间。如果超过会话超时时间(默认为20分钟) - 您可能会认为用户已注销并允许登录。
否则 - 拒绝登录。
您无法确定用户是否仍在使用您的网站或没有。用户登录/注销时,您可以在某个字段中放置1/0,但没有人可以保证用户在关闭标签页之前单击注销链接。
但是,当用户单击注销链接时,您可以通过将该新字段设置为null来改善网站的行为。否则可能会发生某人注销并现在尝试再次登录,但无法执行此操作,因为系统仍在处理其帐户使用。