【发布时间】:2018-12-24 16:33:27
【问题描述】:
我有一个有效期为 1 小时的用户登录。我的意思是用户可以登录系统,他可以继续做他的工作。我不会检查非活动时间。我从用户成功登录的过程一开始就开始计算。无论用户做什么,我都会缓存操作并销毁会话,并在登录后每隔 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(); 设置了每次页面重新加载的当前时间。它替换了用户登录的时间。所以我无法DESTROY会话。如何防止每次重新加载页面时更换时间?
(这个过程必须在 BACKEND ITSELF 中完成。这个菜鸟笔记是因为 stackoverflow 的答案是要销毁 SESSION MANUALLY。)
【问题讨论】:
-
$_SESSION['key_set_time'] = 空($_SESSION['key_set_time'])?时间():$_SESSION['key_set_time'];
-
可能是this帮助
-
这听起来不错。但它仍然在页面刷新中返回当前时间戳。这是由浏览器cookie完成的吗?我不知道这是怎么回事。
-
@EmptyBrain 它没有帮助。它会在每次重新加载时重置会话。
-
把它放在一个函数中。随时调用。
标签: php session session-variables session-cookies session-state