我有一个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”。
这里可能出现什么问题,如何知道该页面处于非活动状态?
非常感谢你的帮助。
答案 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();