我的网站上有高级视频,用户必须付费才能观看。我在付款完成后向用户的电子邮件ID发送随机用户名和密码。然后我想确保不超过一个用户同时使用该登录凭据。为此,我在数据库表中使用login_status列和登录凭据,并在一个用户登录时将其更改为1,并在用户注销时更改为0。但问题是,如果用户关闭浏览器或网络连接丢失可能会发生更新数据库。然后login_status将无限期地为1,并且没有人可以再次使用该登录凭据。
有什么想法完成我的任务吗?
答案 0 :(得分:3)
当用户登录时,如何在数据库中写入时间戳。如果用户仍然登录,您可能有一些逻辑定期更新此值 - 例如,页面可能每5分钟发出一次AJAX请求更新价值或其他东西。
然后,如果该值超过某个阈值(例如,1小时),您可以允许重复登录 - 这当然会重置时间戳并阻止其他人访问。
答案 1 :(得分:1)
尝试创建自定义会话处理程序。存储数据的正确位置与会话信息一起 - 您可以获得全自动垃圾收集的好处。
您可能还希望将此与使用具有固定(但更新)到期时间的Cookie相结合 - 这样用户可以在关闭浏览器后恢复其会话,而不必等待垃圾收集来收获过期的会话。 / p>
下进行。
答案 2 :(得分:0)
定期(每小时?)浏览数据库并将所有login_statuses更改为0.
当用户出于某种原因使用网站时,将其更改回1.
这样,一次不会有人被锁定超过1小时。