如果页面处于非活动状态,则在一段时间后结束会话 - PHP

时间:2013-09-07 22:56:10

标签: php

我有一个php的网站,它有一个登录系统。如果网站处于非活动状态,我想在10分钟后将用户注销。为此,我将使用以下代码:

session_start();
// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['start'];
   if($session_life > $inactive) { 
     session_destroy(); 
     header("Location: index.php"); 
   }
}
$_SESSION['timeout'] = time();

然而,当我运行网站并刷新页面时,它会退出并在“600秒”过去之前将页面指向“index.php”。

这里可能出现什么问题,如何知道该页面处于非活动状态?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您在哪里定义$_SESSION['start' ]?我测试了这个:

$session_life = time() - $_SESSION['start'];
echo $session_life ,' - ', $_SESSION['timeout'];
die();

$session_life$_SESSION['timeout']都有相同的值,所以问题是,哪个值需要$_SESSION['start']

答案 1 :(得分:0)

session_start();

// set timeout period in seconds
$session_timeout = 600;

if (!isset($_SESSION['last_visit'])) { $_SESSION['last_visit'] = time(); } // I like brackets!

if((time() - $_SESSION['last_visit']) > $session_timeout) { 
  session_destroy(); 
  header("Location: index.php"); // think about user feedback, "your session timed out" ... index.php?action=session_timeout
  exit; // <= IMPORTANT !!!
}


$_SESSION['last_visit'] = time();