来自更多地方的“记住我”

时间:2012-11-26 02:04:14

标签: php mysql login

我正在尝试使用PHP和MySQL创建登录系统。我正在使用cookie以保持用户长时间登录。 cookie具有随机生成的字符串,该字符串也在数据库中。将它们相互比较并采取适当的行动。基本上,它是标准的身份验证系统。

我的问题是我不太清楚如何从多个位置处理身份验证问题。由于每个用户只有一个随机字符串,如果他从另一个用户登录,他将从一个位置登出。

我能想出的唯一解决方案是存储用户的多个登录信息的表,每个登录信息都包含一个单独的随机字符串。

这是正确的方法吗?未使用的会话会发生什么?

1 个答案:

答案 0 :(得分:3)

如果要支持多个位置,则无法将Cookie值保留在用户表中。相反,您应该创建一个新的自动登录表,分别使用cookie值和用户ID作为主键和外键。我相信这也是你的想法。

然后,出于管家的目的,您可以记录上次使用任何值进行登录的最后时间。超过XX天的任何内容都将被删除,用户需要再次登录。您可以为此设置一个cron作业,也可以在每次有人使用cookie登录时运行它。

cron删除作业可以处理更多记录(因为没有人等待它完成),但是为了优化,你需要在日期字段上有一个索引(以防止表扫描)。

每次登录时的清理都有一个好处,即您只需要查询该用户的cookie值,并且由于外键约束,查找速度很快。但是您只能清理当前用户的cookie,因此您可能会收集从未再次使用过的cookie。

相关问题