Выход из сеансов пользователей PHP - PullRequest
2 голосов
/ 03 ноября 2010

У меня проблемы с веб-сайтом 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.

Ответы [ 3 ]

2 голосов
/ 26 ноября 2010

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

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

0 голосов
/ 03 ноября 2010

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

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

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

0 голосов
/ 03 ноября 2010

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

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

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