我正在尝试创建一个脚本,当 20分钟过去没有帐户活动(例如点击次数)时,将$_SESSION["reverify"]
设置为TRUE
。
关于
$_SESSION
的说明:当$_SESSION["reverify"]
设置为TRUE
时,用户必须 重新验证他或她自己。
我试过这个:
$expire_stamp = date('Y-m-d H:i:s', strtotime("+20 min"));
$now_stamp = date("Y-m-d H:i:s");
if($now_stamp == $expire_stamp) {
$_SESSION["reverify"] == true;
}
但它根本不是一个好剧本,并且有很多缺点。我是在思考,还是只是一个菜鸟?我无法做到这一点。
if (isset($_SESSION['loggedin_time']) && (time() - $_SESSION['loggedin_time'] > 120)) {
$_SESSION["reverify"] = true;
}
if(isset($_SESSION["reverify"]) && $_SESSION["reverify"] = true) {
header("Location: index.php?reverify=true");
}
答案 0 :(得分:0)
会话属性的会话超时不太好主意。你想要解决的问题在这个链接上有很好的解释。
This is answer to another question at stack overflow and is a good read
希望这有帮助
<?php
function session_timeout_extend($minutes_to_extend){
session_start();
$timeInseconds = time() + $minutes_to_extend*60;
$_SESSION['last_time_allowed'] = $timeInseconds;
}
session_start();
if(!isset($_SESSION['last_time_allowed'])){
session_timeout_extend(20);
echo 'setting session';
die();
}
if(time() >= $_SESSION['last_time_allowed']){
echo 'session expired';
}
else{
echo 'session active';
}
?>
请参阅上面的代码作品。您可以使用此代码进行测试,然后将其集成到您的工作流程中。请注意,这种方法虽然在2038年1月19日之后无法用作Y2k38错误。
您只需将上面更新的方法调用到用户验证代码块即可。