2014-10-10 2 views
1

У меня есть онлайн-система и вам необходимо, чтобы пользователь выходил из системы после 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

Mayby это поможет вам, как установить время жизни сессии! http://stackoverflow.com/q/6360093/3933332 – Rizier123

+0

Вам нужно, чтобы человек выходил из системы (т. е. уничтожал сеансы). Вам нужен '? Timeout = true'? Если нет, установите максимальное время жизни сеанса до 3600 - http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime –

+0

Мне кажется, вам нужно узнать о классе обработчика сеанса. http://php.net/manual/en/sessionhandler.destroy.php – Naeem

ответ

1

использования StrToTime() это может пригодиться

объявить сессию, как это каждый раз, когда пользователь делает REQ.

$_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"); 

убедитесь, что сессия начинается в каждой странице.

работает отлично ...

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) { 

} 
0

Вам нужно преобразовать время учитывая, как показано ниже

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

Попробуйте с ниже код:

$cut = time() - 60*60; 

заменить ниже

$cut = strtotime('-1 hour'); 
Смежные вопросы