слишком быстрый выход php-скриптов из системы

#php #session-timeout #session-cookies

#php #тайм-аут сеанса #сессия-cookies

Вопрос:

Я работал в проекте, где другой разработчик написал код, в то время как пользователь, как обычно, входит в session_start (), а затем проверяет, как показано ниже:

     if($a['userName'] == $username amp;amp; $a['password'] == $pwd)   
{
                $_SESSION['id'] = $a['id'];         ?>       <script language="javascript"type="text/javascript">window.location="host.php";</script> }     else    {       
$msg= "Invalid Username Password";  
}
  

И когда пользователь хочет использовать форму через пару секунд, она выходит из системы, и пользователь не может отправить данные.

Я попытался увеличить продолжительность жизни сеанса:

 $sessionCookieExpireTime=8*60*60;
session_set_cookie_params($sessionCookieExpireTime); 
  

А также пробовали с увеличением срока службы сеанса во время выполнения, как показано ниже:

 ini_set('session.gc_maxlifetime', '3600');
  

И, наконец, попробовал, увеличив время жизни сеанса php.ini .
К сожалению, это не сработало.

Одна вещь, которую я должен упомянуть, что нет session_destroy () для проблем с выходом.

Заранее спасибо.

Ответ №1:

На каком сервере вы работаете?

На общем сервере, на котором запущено несколько сайтов, использующих общий каталог сеансов, время session.gc_maxlifetime фактически является самым коротким временем жизни всех сайтов, обращающихся к этому общему каталогу.

Если проблема на сервере разработки, выясните, где хранятся файлы сеанса, и посмотрите, что с ними происходит.

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

Во всех трех случаях: попробуйте сохранить файлы сеанса в другом каталоге. В коде вы должны указать каталог сеанса с помощью session_save_path() перед вызовом session_start() .

Комментарии:

1. это облачная машина, и там размещено множество других php-проектов, они работают хорошо

Ответ №2:

Тайм-аут возникает, когда пользователь бездействует в течение определенного времени. Невозможно автоматически выйти из системы, если не использовать session_destroy.

Возможно, что ваш код $ a [‘id’];

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