PHP 会话销毁工作不正常

PHP session destroy is not working properly

我有一个仅在 1 小时内有效的用户登录。我的意思是用户可以登录到系统并且他可以继续他的工作。我不会检查非活动时间。我从用户成功登录 in.Whatever 用户所做的过程的一开始就开始计算,我将缓存操作并销毁会话并在登录后每隔 1 小时定向到登录部分.

当用户成功登录后,我按以下方式将时间戳设置为 $_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(); 在每个页面设置当前时间 reload.It 替换用户登录的时间 in.So 我无法 销毁 会话。如何防止在每次重新加载页面时替换时间? (这个过程必须在 BACKEND ITSELF 中完成。这个菜鸟注意是因为 Whosebug 的答案是要破坏 SESSION MANUALLY。)

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声明