从时间上移除一小时()

时间:2014-10-10 13:07:44

标签: php session time

我有一个在线系统,需要用户在60分钟不活动后退出。

现在的代码可以减少30分钟。

    $cut = time() - 30*60;

现在我认为以下会删除一小时,所以超时是60分钟。

$cut = time() - 60*60;

这是发生的完整代码。在60分钟不活动后,我需要该人退出。

// Time out Users 60 minutes
    $last = $_SESSION['time'];
    $cut = time() - 60*60;

    if ($last < $cut)
        {
            session_destroy();

            $get = $_GET;
            $location = 'login.php?timeout=true';
            foreach($get as $key => $item)
                {
                    $location .= '&'.$key."=".$item;
                }
            header('Location: '.$location);
        }
    else
    $_SESSION['time'] = time();

现在代码不起作用我不认为。

4 个答案:

答案 0 :(得分:1)

如果您只想查看$_SESSION['time']过期后是否已超过一小时,只需在此时间内添加一小时并将其与现在进行比较。如果它比一个小时以前还要少。

$now  = new DateTime(); 
$last = new DateTime('@' . $_SESSION['time']);
$last->modify('+1 hour');
if ($last < $now) {

}

或者从现在开始减去一小时,看看它是否仍然大于$_SESSION['time']

$now  = new DateTime(); 
$now->modify('+1 hour');
$last = new DateTime('@' . $_SESSION['time']);
if ($last < $now) {

}

答案 1 :(得分:1)

使用strtotime()它可以派上用场

每次用户提出请求时都会声明会话。

$_SESSION['time'] = strtotime("now");

编码部分

$last = $_SESSION['time']; 

$cut = strtotime("-60 min");


if ($last < $cut)  //can also use strtotime("-60 min") directly
    {
       // session_destroy();
        unset($_SESSION['time']);  //use inorder to delete only that session


        $get = $_GET;
        $location = 'login.php?timeout=true';
        foreach($get as $key => $item)
            {
                $location .= '&'.$key."=".$item;
            }
        header('Location: '.$location);
    }
else
$_SESSION['time'] = strtotime("now");

确保会话在每个页面中启动。

工作得很好......

答案 2 :(得分:0)

您需要转换时间,如下所示

$cut = time();
$lesstime = date('YOUR TIME FORMATE',strtotime($cut,"-1 hours"));

答案 3 :(得分:0)

尝试使用以下代码:

$cut = time() - 60*60;

替换为以下

$cut = strtotime('-1 hour');