【问题标题】:auto redirect after no user action [duplicate]没有用户操作后自动重定向[重复]
【发布时间】:2013-04-12 08:36:28
【问题描述】:

T-mobile 已经使用了这个逻辑,但我不知道怎么做。

场景如下:我登录我的网站,2 分钟内什么都不做,只是坐着看屏幕。在这种情况下,我应该被重定向到会话将被销毁的注销页面。

我该怎么做?

网络上的示例基于用户操作,例如检查某事(上次活动等)在用户活动之后

注意:我正在使用 Codeigniter 及其数据库会话。

【问题讨论】:

标签: php redirect codeigniter-2


【解决方案1】:

你需要javascript:

<script type="text/javascript">
setTimeout(onUserInactivity, 1000 * 120)
function onUserInactivity() {
   window.location.href = "onUserInactivity.php"
}
</script>

这将在 2 分钟不活动后重定向用户。如果您想让它依赖于鼠标移动,请尝试:

<script type="text/javascript">
inactivityTimeout = False
resetTimeout()
function onUserInactivity() {
   window.location.href = "onUserInactivity.php"
}
function resetTimeout() {
   clearTimeout(inactivityTimeout)
   inactivityTimeout = setTimeout(onUserInactivity, 1000 * 120)
}
window.onmousemove = resetTimeout
</script>

【讨论】:

  • 很遗憾,这需要用户操作。
  • 请修正您的问题,因为 TobSpr 已正确回答您的原始问题。
  • 这不需要用户操作。这是一个超时,只要用户移动鼠标(不过你可以将其扩展为按键),它就会被重置。
【解决方案2】:

所以,在页面加载时

$now = mktime();
if($now - $_SESSION['last_activity'] < 120)
{
 $_SESSION['last_activity']=mktime(); 
}else{
 logout();
}

自上次活动以来是否已过去 120 秒?注销他们/销毁他们的会话等。

要让页面在空闲后自动注销,您应该使用 javascript。

如果您希望在没有 javascript 且用户不采取任何操作的情况下发生这种情况,请将其放在您的所有视图中:

<meta HTTP-EQUIV="REFRESH" content="120; url=http://www.yourdomain.com/logout.php">

它会在页面上停留 120 秒后将它们重定向到您的注销屏幕。如果他们点击的话

【讨论】:

  • 很遗憾,这需要用户操作。
  • 这不需要用户操作。如果用户决定采取行动,这将决定他的会话是否应该因不使用而过期。这应该与javascript一起使用以实现OP的原始目标,但他不应该严格依赖客户端代码。
  • 好的,下次提问前请把你的问题说清楚。
  • 不,您最初的问题是如何让非活动站点在一段时间不活动后将用户注销。这个问题已经回答了。
  • 这对我来说似乎很清楚,但根据你对每个人的回答,我猜你不知道你想要什么。您不会让 CodeIgniter 确定客户是否在不访问他们的网络摄像头的情况下盯着他的电脑屏幕。如果没有 javascript,您将无法确定鼠标移动/非导航活动。弄清楚你想要什么,然后再试一次。
猜你喜欢
  • 2021-11-29
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多