2010-11-03 2 views
2

У меня возникают проблемы с веб-сайтом PHP, который требует, чтобы пользователи вошли в систему для доступа ко всему контенту, кроме домашней страницы и нескольких статических страниц (о нас, свяжитесь с нами и т. Д.). Несколько пользователей заявили, что они выходят из системы каждые несколько минут при использовании сайта - они могут войти в систему, но через несколько минут ему снова будет показана форма входа в систему. Я не могу подтвердить это сам, поскольку сайт, кажется, работает отлично для меня - даже используя тот же браузер, что и они, и под их учетными записями, - но мне интересно, может ли это быть проблемой с настройками сеанса?Выполнение сеансов PHP-сессий

Согласно phpinfo(), значения конфигурации сеанса являются:

session.auto_start = Off 
session.bug_compat_42 = On 
session.bug_compat_warn = On 
session.cache_expire = 180 
session.cache_limiter = nocache 
session.cookie_domain = no value 
session.cookie_httponly = Off 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_secure = Off 
session.entropy_file = no value 
session.entropy_length = 0 
session.gc_divisor = 100 
session.gc_maxlifetime = 1440 
session.gc_probability = 1 
session.hash_bits_per_character = 4 
session.hash_function = 0 
session.name = PHPSESSID 
session.referer_check = no value 
session.save_handler = files 
session.save_path = /shared/sessions 
session.serialize_handler = php 
session.use_cookies = On 
session.use_only_cookies = Off 
session.use_trans_sid = 0 

Есть ли что-то явно не так с настройками выше, которые могут быть причиной, чтобы пользователи регулярно логаут? session.gc_maxlifetime выглядит немного низко, но 1440 секунд все еще 24 минуты, и пользователи выходят из системы чаще, чем это. Мы не проверяем IP-адрес пользователя как часть обработки сеанса, хотя офис имеет статический IP-адрес.

Это сервер Debian Lenny, PHP 5.2.6 и Apache 2.2.9.

ответ

2

Срабатывание session.gc_maxlifetime до 3600 кажется (после мониторинга в течение недели или двух), чтобы устранить проблему. Я все еще не уверен, что это была настоящая причина, так как пользователи выходили из системы через 2-3 минуты, но стоит попробовать всех, кто сталкивается с подобной проблемой.

Запуск каждого вызова функции входа/выхода из системы, чтобы вы могли соединить их и выявить любые несоответствия (например, много логинов от одного пользователя без каких-либо вызовов выхода). :)

0

Кажется, что все нормально - сессия должна истечь через 1440 секунд. Есть ли вероятность, что session_destroy() вызывается на одной из страниц, которые посещает пользователь? Или, может быть, массив $_SESSION изменен, и из-за этого пользователь регистрируется?

Кроме того, вы сами воспроизвели проблему? Обычно у пользователей есть привычка делать вещи большими. 24 минуты могут показаться часто для них :)

+0

Я не могу подтвердить или воспроизвести проблему самостоятельно, что является главной проблемой на самом деле - если на одной из страниц было что-то вроде session_destroy() (ее нет, она существует только в журнале()) Я ожидаю, что это повлияет и на меня. – pwaring

0

Вы используете любые вызовы AJAX на этом веб-сайте?

Если так, звонки AJAX, как известно, не обновляют cookie cookie (по крайней мере, из моего опыта работы с каркасом CodeIgniter, который также использует файлы cookie для создания и передачи сеансов), поэтому люди выходят из системы, даже если они не должны ,

Возможно, в браузере есть некоторые настройки - время истечения срока действия cookies, аддоны или что-то подобное.

+0

Я использую вызовы AJAX на некоторых страницах, но все сценарии, которые они называют, имеют общий файл include, который обновляет cookie сеанса. В любом случае они используются только для отображения информации на странице - для любого взаимодействия требуется другая полная загрузка страницы, которая обновит файл cookie сеанса. – pwaring

+0

Кроме того, я проверил с некоторыми пользователями, и они выходят из системы после посещения страниц, на которых вообще нет вызовов AJAX. – pwaring

+0

Вы проверяли свои браузеры для расширений и настроек файлов cookie? –

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