2017-01-03 2 views
0

первый раз здесь, наконец, решил сделать учетную запись здесь после того, как я использовал слишком много часов своего рабочего дня, пытаясь решить эту проблему вчера.php autologout неактивные пользователи

поэтому у меня есть этот скрипт sessionCheck.php, который должен выйти из системы, если он неактивен, см. Код ниже. Прямо сейчас переменная $ inactive = 15; что должно означать, что если пользователь неактивен в течение 15 секунд, они должны быть выведены из системы и перенаправлены на страницу выхода. Однако по какой-то странной причине это всегда занимает 120 секунд, независимо от того, устанавливаю ли значение $ неактивным до 15 секунд, 1 секунду или 60 секунд, это всегда занимает 120 секунд. но если я установил переменную, чтобы сказать 130, она больше не выходит из системы и не перенаправляет, а только обновляет страницу.

Я не могу на всю жизнь понять, почему, поскольку это на самом деле не кажется логичным.

<? 
session_start(); 

// set timeout period in seconds 
$inactive = 15; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['timeout']; 
    if($session_life > $inactive) 
     { session_destroy(); header("Location: login.php?loggut"); 
     $db->Execute("UPDATE tblTimeLog SET LogoutTime = NOW() WHERE sid ='".session_id()."'".$row['konsulentid'].''); 

     } 
} 
$_SESSION['timeout'] = time(); ?> 

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

Снова, первый раз, так жаль, если нарушите какие-либо рекомендации, я уверен, что я не сделал! вся помощь приветствуется!

+0

Я не думаю, что это будет исправить вашу проблему, но это может быть частью этого. Действительно ли 'Локация: login.php? Loggut' правильно? Должно ли это быть? Logout? –

+0

ах да, это правильно, предыдущий программист, который работал над этим, использовал странное сочетание норвежского и английского наименований. следовательно, «логгут»! –

+0

Привет @ BalderKjøs, я выполнил ваш код с некоторыми незначительными изменениями, предложенными Фрэнки, и он отлично работает. Я думаю, что просто переименование имен переменных дает другое имя, потому что где-то $ inactive можно использовать, чтобы переименовать его, а затем проверить. – vijay

ответ

0

Я бы посоветовал поставить перенаправление заголовка после запроса и выйти из сценария, чтобы вы могли убедиться, что запрос обработан, и $_SESSION['timeout'] не обновляется после попытки выхода из системы.

Вы также уничтожаете сеанс, прежде чем использовать свой запрос session_id() еще раз.

Дайте этому попытку:

<? 
session_start(); 

// set timeout period in seconds 
$inactive = 15; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['timeout']; 
    if($session_life > $inactive) 
     { 
       $db->Execute("UPDATE tblTimeLog SET LogoutTime = NOW() WHERE sid ='".session_id()."'".$row['konsulentid'].''); 
       session_destroy(); 
       header("Location: login.php?loggut"); 
       exit(); 
     } 
} 
$_SESSION['timeout'] = time(); 
?> 
+0

Я пробовал эти изменения и по-прежнему получал ту же проблему, но все равно было хорошо сделать эти изменения, хотя это не помогло мне проблема! –

+0

эй снова! im все еще на этом, так что да, это работает так, как если бы пользователь сделал действие через 15 секунд, страница вместо этого выведет их и направит их на «login.php? loggut». Тем не менее, страница не обновляется автоматически через 15 секунд! Я попытался использовать заголовок («refresh: 0; Location: login.php? loggut»), но затем он по-прежнему не обновляется сам по себе, и если обновить его вручную, он больше не понимает местоположение. –

+0

не то, что вы хотите? Пока пользователь активен в течение 15 секунд, он останется в системе. После 15 секунд бездействия он выйдет из системы. Это то, что происходит сейчас, верно? 15 секунд довольно короткое для максимальной продолжительности бездействия для пользователя. Если вы сделаете время бездействия как час, пользователь, вероятно, совершит несколько посещений страницы, где сеанс тайм-аута будет обновляться при каждом посещении страницы. – Frankey

Смежные вопросы