【问题标题】:User timeout in Safari on iPadiPad 上 Safari 中的用户超时
【发布时间】:2012-07-08 19:57:09
【问题描述】:

我正在创建一个要在 iPad 上使用的网络应用程序。一个重要功能是用户一次只能登录一次,并且一次只能在一台设备上登录。如果用户登录,我已经通过将我们数据库中的一个字段从 0 更新为 1 来实现这一点。

但是,如果用户忘记注销,设置超时功能也很重要。我尝试在 PHP 中执行此操作,但它不合适,因为必须在脚本运行以注销用户之前刷新页面。

然后我尝试在客户端使用 JavaScript(30 分钟后进行简单的页面重定向),但我刚刚了解到,如果您在 iPad 上最小化 Safari,所有正在运行的脚本都会停止,因此用户可以轻松单击主屏幕没有注销,超时将不起作用。

Sooo...我没有想法...有什么方法可以让一个人在 iPad 上的 Safari 中超时?

【问题讨论】:

  • 通常不可能100%准确地检测到用户何时离开;特别是如果您将会话数据存储在数据库中,您将需要编写一个定期运行的脚本(即 cronjob)并检查会话是否已过期。

标签: php javascript ipad timeout logout


【解决方案1】:

使用您的服务器 CRONJOB 功能 http://en.wikipedia.org/wiki/Cron 并编写一个用于 DB 范围注销检查的脚本。这样您就可以完全排除用户客户端的问题,您所要做的就是使用时间戳来监控用户的操作,稍后您将使用您的脚本进行检查。

例如,如果您的用户表中有 last_action_time 字段,则您将在每次重新加载网站或完成任何其他操作时更新该字段。只需将time() 存储到该字段中即可。对于 cronjob 脚本,只需检查所有使用 last_action_time

【讨论】:

  • +1。不要相信客户。只需确保您还在每个响应开始时进行安全检查。如果登录超时,您可以将后续请求重定向到身份验证屏幕。
猜你喜欢
  • 1970-01-01
  • 2014-03-19
  • 2011-06-03
  • 2011-11-18
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 2012-09-27
  • 2014-08-21
相关资源
最近更新 更多