Сценарии php выходят из системы слишком быстро - PullRequest
2 голосов
/ 20 мая 2011

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

    if($a['userName'] == $username && $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 () для проблем с выходом из системы.

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

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

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

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

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

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

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

0 голосов
/ 20 мая 2011

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

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

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

...