Тайм-аут сеанса PHP, проблема с кодом - PullRequest
0 голосов
/ 18 июня 2010

У меня есть код, который выводит пользователя из системы после x секунд бездействия. Проблема в том, что он регистрирует их до указанного времени, даже не считая бездействие.

Это код:

    <?php
    $_SESSION['loginTime'] = time();

    if($_SESSION['loginTime'] < time()+10*60){ 
         $error_msg ="Logged out due to inactivity";

 showLoginPasswordProtect($error_msg); 

session_destroy();
    }
    ?

Ответы [ 3 ]

1 голос
/ 18 июня 2010

Ну, $_SESSION['loginTime'] - это отметка времени, в которую они вошли (надеюсь), которая будет всегда меньше текущей отметки времени, поскольку вы добавляете ее на каждую секунду.Так что вам нужно сделать это:

<?php

if($_SESSION['loginTime'] + 600 < time()){ 
    $error_msg ="Logged out due to inactivity";

    showLoginPasswordProtect($error_msg); 

    session_destroy();
}
?>

Таким образом, он будет выполнять оператор, если прошло 600 секунд.

0 голосов
/ 18 июня 2010

Посмотрите, что делает ваш скрипт:

  1. $_SESSION['loginTime'] = time();

... устанавливает «loginTime» на текущее время. Допустим, текущее время '10'

  1. if($_SESSION['loginTime'] < time()+10*60)

... поскольку мы предполагаем, что текущее время равно 10, тогда time()+10*60 становится 10+10*60 = 610, а if () становится: if (10 < 610) {

Итак, ваш код ВСЕГДА выйдет из системы, поскольку ваша логика нарушена.

Вам нужно установить loginTime ONCE, в сценарии входа в систему, вместо того, чтобы устанавливать его каждый раз, как вы сейчас.

0 голосов
/ 18 июня 2010

Вам необходимо установить $_SESSION['loginTime'] в отдельном скрипте, предположительно, после аутентификации пользователя.

Затем в этом сценарии вам необходимо выяснить разницу между временем сеанса и текущим временем, а затем посмотреть, превышает ли оно пороговое значение времени ожидания.

Например:

if( (time() - $_SESSION['loginTime'] ) > 10*60) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...