在php中使用相同的登录凭据阻止多次登录

时间:2010-06-02 15:01:24

标签: php database

我的网站上有高级视频,用户必须付费才能观看。我在付款完成后向用户的电子邮件ID发送随机用户名和密码。然后我想确保不超过一个用户同时使用该登录凭据。为此,我在数据库表中使用login_status列和登录凭据,并在一个用户登录时将其更改为1,并在用户注销时更改为0。但问题是,如果用户关闭浏览器或网络连接丢失可能会发生更新数据库。然后login_status将无限期地为1,并且没有人可以再次使用该登录凭据。

有什么想法完成我的任务吗?

3 个答案:

答案 0 :(得分:3)

当用户登录时,如何在数据库中写入时间戳。如果用户仍然登录,您可能有一些逻辑定期更新此值 - 例如,页面可能每5分钟发出一次AJAX请求更新价值或其他东西。

然后,如果该值超过某个阈值(例如,1小时),您可以允许重复登录 - 这当然会重置时间戳并阻止其他人访问。

答案 1 :(得分:1)

尝试创建自定义会话处理程序。存储数据的正确位置与会话信息一起 - 您可以获得全自动垃圾收集的好处。

您可能还希望将此与使用具有固定(但更新)到期时间的Cookie相结合 - 这样用户可以在关闭浏览器后恢复其会话,而不必等待垃圾收集来收获过期的会话。 / p>

下进行。

答案 2 :(得分:0)

定期(每小时?)浏览数据库并将所有login_statuses更改为0.

当用户出于某种原因使用网站时,将其更改回1.

这样,一次不会有人被锁定超过1小时。