我有一个仅1小时有效的用户登录名。我的意思是用户可以登录系统,并且可以继续工作。我不会检查闲置时间。我从用户成功登录的过程开始就开始计算,无论用户做什么,我都会缓存操作并销毁会话,并在登录后每隔1小时直接登录到登录部分。 / p>
当用户成功登录后,我以以下方式将时间戳设置为$_SESSION
变量。
$_SESSION['key_set_time'] = time();
。
以下是 SESSION DESTROY 代码。
$_SESSION['key_set_time'] = time();
$session_duration = 3600;
$current_time = time();
if(((time() - $_SESSION['key_set_time']) > $session_duration)){
session_destroy();
}else{
header('LOCATION:/login.php');
}
在调试时,我发现$_SESSION['key_set_time'] = time();
设置了每次重新加载页面的当前时间。它代替了用户登录的时间。因此,我无法 DESTROY 。如何防止每次重新加载页面时都出现替换时间?
(此过程必须在 BACKEND ITSELF 中完成。此菜鸟笔记是由于stackoverflow的答案,这会破坏 SESSION MANUAL 。)
答案 0 :(得分:0)
if (!isset($_SESSION['key_set_time'])) {
$_SESSION['key_set_time'] = time();
} else if (time() - $_SESSION['key_set_time'] > 3600) {
// session started more than 1 hour ago
session_regenerate_id(true); // change session ID for the current session
$_SESSION['key_set_time'] = time(); // update creation time
}
这应该适合您的情况。让我知道是否可以。
您可以根据需要更改else if
语句