如果时间设置,请设置$ _SESSION ["重新验证"]

时间:2016-05-29 17:48:59

标签: php session

我正在尝试创建一个脚本,当 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");
}

1 个答案:

答案 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错误。

您只需将上面更新的方法调用到用户验证代码块即可。