Установка таймаута сеанса из-за неактивности - PullRequest
1 голос
/ 12 марта 2012

Я сейчас работаю над тайм-аутом сессии. Во время бездействия на моей странице в течение определенного времени время сеанса истекает и он возвращается на страницу входа.

У меня есть этот код.

// set timeout period in seconds
$inactive = 30;
// check to see if $_SESSION['timeout'] is set
$logger->debug("root|DEBUG3 accdetails_proc");
if(isset($_SESSION['timeout']) ) {
    $session_life = time() - $_SESSION['timeout'];
    if($session_life > $inactive)
    { 
        session_destroy(); 
        header("Location: ../../index.php");
             ///OR
        //echo('<script type="text/javascript">');
        //echo('top.location.href = "../../index.php"');
        //echo('</script>');  
    }
    else{ }

И заголовок, и эхо не работают. Когда это закончится, он останавливается в session_destroy () и все еще выполняет обратный вызов, потому что я вызываю этот файл, используя ajax.

Если я использую «эхо», ответ:

<script type="text/javascript">top.location.href = "../../index.php"</script>');  

, который при анализе в моем обратном вызове уже выдает ошибку.

если я использую «заголовок», он возвращает html моей страницы входа но сначала выполняет мой обратный вызов, так что он по-прежнему выдает ошибку и страница входа не загружается.

Может кто-нибудь помочь с тем, как не выполнять обратный вызов ajax, когда вы уничтожаете сеанс?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Если вы используете обратный вызов Ajax для проверки истечения времени ожидания сеанса, вам нужно обработать перенаправление на стартовую страницу в обработчике данных Ajax.

Ваш PHP может выглядеть следующим образом:

if(isset($_SESSION['timeout']) ) {
    $session_life = time() - $_SESSION['timeout'];
    if($session_life > $inactive)
    { 
        session_destroy(); 
        echo "LOGOUT";
    }
}
echo "OK";

Ваш код JavaScript на вашей странице может выглядеть следующим образом (при условии, что вы используете jQuery):

$.get('http://example.com/my_session_check.php', function(data){ 
  if(data=='LOGOUT') {
    top.location.href="../../index.php";
  } 
});
0 голосов
/ 12 марта 2012

Вам необходимо добавить ту же логику в ajax, которую вы используете в заголовочном файле.отправить время ожидания ответа на функцию обратного вызова и при обратном вызове вы можете показать предупреждение, а затем перенаправить браузер в соответствии с вашими требованиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...