在会话中设置一个键,该键存储在用户表中的数据库中:
表用户
登录时:
在每一页上:
这可确保在有更新的登录名时登录名自动过期。在任何时候,每个帐户只能有一个登录用户。
更新
刚刚看到您对问题的评论。我的回答对您不起作用,因为它不会禁止第二次登录,而是使之前的任何登录无效。
如果您想防止第二次登录,那么使用您在每个页面上更新的时间戳是最好的解决方案:
登录时:
(假设 MySQL :)
SELECT user_id
FROM user
WHERE username='username'
AND password='password'
AND last_access < DATE_SUB(NOW(), INTERVAL 10 MINUTE);
Run Code Online (Sandbox Code Playgroud)
如果找到一行,则该帐户存在并且该登录不会被另一个登录阻止。您可能希望将其拆分为两个查询(首先检查登录,然后检查上次访问),以便为失败的登录提供更好的错误消息,否则为“帐户不存在”或“已阻止”。
在每一页上:
UPDATE user
SET last_access=NOW()
WHERE user_id='CurrentUserId';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2854 次 |
| 最近记录: |