我有一个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();
但是,当我运行网站并刷新页面时,它会注销并将页面定向到"索引.php",甚至在"600 秒"过去之前。
这里可能有什么问题,我怎么知道页面处于非活动状态?
非常感谢您的帮助。
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();
你在哪里定义$_SESSION['start' ]
?我测试这个:
$session_life = time() - $_SESSION['start'];
echo $session_life ,' - ', $_SESSION['timeout'];
die();
$session_life
和$_SESSION['timeout']
都具有相同的值,所以问题是,哪个值需要$_SESSION['start']
?