我有一个在线系统,需要用户在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();
现在代码不起作用我不认为。
答案 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');