PHP在10分钟不活动后自动注销

Paw*_*ude 1 php html5 popup session-timeout css3

目前我正在使用下面提到的PHP代码跟踪用户在网站上花费的时间:

if (!isset($_SESSION[timeset1]))
{
$one_val = time();
$_SESSION[timeset_dummy]= $one_val; 
$two_val = time()+1;
  $_SESSION[units_all] = array
  (
   "year"   => 29030400,
   "month"  => 2419200,
   "week"   => 604800,
   "day"    => 86400,
   "hr"   => 3600,
   "min" => 60,
   "sec" => 1
  );
}
else 
{
$two_val = time();
}
$diff = abs($two_val - $_SESSION[timeset_dummy]);

foreach($_SESSION[units_all] as $unit => $mult)
   if($diff >= $mult)
   {
    $output .= " ".intval($diff / $mult)." ".$unit.((intval($diff / $mult) == 1) ? ("") : ("s"));
    $diff -= intval($diff / $mult) * $mult;
   }
Run Code Online (Sandbox Code Playgroud)

我想在8分钟不活动后向用户弹出会话将在接下来的2分钟内到期.你能否建议如何显示弹出窗口(最好不使用Javascript,很高兴有CSS3和HTML5).弹出窗口将显示警告消息"您是否要继续"和一个按钮"是",如果按钮未被点击2分钟,则会自动执行页面注销脚本(PHP).

任何指向实现此逻辑的指针.

teh*_*Aon 6

我发现了一个jQuery插件,看起来会让你的生活更轻松.它被称为jquery-idleTimeout.

该插件有一些配置项,因此您可以根据自己的需要进行自定义...

  • 不活动:1200000 // 20分钟默认值(显示通知前多长时间)
  • sessionAlive:300000,// 5分钟默认命中alive_url,我们用于我们的ajax*接口,页面不经常更改.这有助于防止应用程序的注销屏幕出现在ajax回调中.如果将此值设置为false,则不会发送.
  • alive_url:'/ path/to/your/imHere/url',//将活动ping发送到此网址
  • redirect_url:'/ js_sandbox /',//注销时去哪里
  • click_reset:true,//重置点击超时(对于ajax界面) - 重置sessionAlive计时器,因此如果我们因为其他原因刚刚进行了ajax调用,我们就不会使用alive_url来启动你的应用程序.
  • logout_url:'/ js_sandbox/timedLogout/index.html'//重定向前注销(url,这样你可以在重定向到登录界面之前完全破坏会话)

这是一个下载库的github页面的链接.

https://github.com/philpalmieri/jquery-idleTimeout

编辑

在查看源代码时我也注意到了一些东西,他们使用jquery-ui作为样式表,使它看起来像在演示中一样.