PHP会话销毁无法正常工作

时间:2018-07-17 04:58:23

标签: php session session-variables session-cookies session-state

我有一个仅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 。)

1 个答案:

答案 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语句