По умолчанию PHP использует обработчик сеанса files
. Эти файлы хранятся в соответствии с настройкой session.save_path
, но по умолчанию используется системный временный каталог (очень небезопасное расположение, рассмотрите возможность его изменения)
Этот обработчик сеанса сохраняет каждый сеанс в виде сериализованного массива PHP в файле с именем идентификатора сеанса.
Если вы можете узнать идентификатор сеанса до того, как он будет очищен процедурой сбора мусора сеанса, его можно перехватить, поскольку PHP внутренне не выполняет никаких проверок работоспособности. Вы можете сделать это самостоятельно, сохранив IP-адрес пользователя в сеансе и сравнив его с текущим IP-адресом, очистив сеанс, если он не совпадает.
session.gc_maxlifetime
определяет, сколько секунд сеанс будет считаться действительным. После этого момента сеанс имеет небольшую вероятность быть удаленным каждый раз, когда происходит запрос. По умолчанию установлено значение 1440 секунд (или 24 минуты).
По умолчанию этот шанс равен 1%, но его можно изменить, изменив значения session.gc_probability
и session.gc_divisor
(по умолчанию они равны 1 и 100 соответственно).
Существуют и другие обработчики сеансов, например, включенные в расширения memcache или memcached . Однажды была одна, основанная на библиотеке общей памяти libmm
, но я считаю, что она была прекращена.