Вместо поиска файлов (что включает в себя больше ввода / вывода) и т. Д.,
Что такое файл cookie сеанса: файл cookie сеанса
Лучший способ - сохранить отметку времени «самого последнего действия» в переменной $ _SESSION.
Обновление данных сеанса по каждому запросу (включая автоматические периодические вызовы ajax, если таковые имеются).
Допустим, вы хотите сбросить сеанс через 10 минут,
if (isset($_SESSION['most_recent_activity']) &&
(time() - $_SESSION['most_recent_activity'] > 600)) {
//600 seconds = 10 minutes
session_destroy();
session_unset();
}
$_SESSION['most_recent_activity'] = time(); // the start of the session.
Чтобы избежать таких атак, как Фиксация сеанса : (Фиксация сеанса - это атака, которая позволяет злоумышленнику перехватить действительный сеанс пользователя), периодически обновляйте идентификатор сеанса, скажем, в течение 5 минут (я бы предложил время регенерации, а также время окончания сессии немного больше). Более подробный список атак: список атак .
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
}
else if (time() - $_SESSION['CREATED'] > 600) {
session_regenerate_id(true);
$_SESSION['CREATED'] = time();
}
Также убедитесь, что для session.gc-maxlifetime
установлено максимальное время истечения, которое вы хотите использовать.
Вы можете сделать это
ini_set('session.gc-maxlifetime', 600)
Или
Установите его прямо в php.ini.
а также
session.cookie_lifetime :
session.cookie_lifetime указывает время существования файла cookie в секундах, который отправляется в браузер.
Но об уничтожении сеанса нужно заботиться на стороне сервера, а не на стороне клиента.
Установка для session.cookie_lifetime значения 0 приведет к тому, что cookie-файл сеанса будет вести себя так, как cookie-файл сеанса, т. Е. Что cookie-файл сеанса действителен только до закрытия браузера.
Хотя этот метод немного утомителен, он более элегантен.
Ах, нашел ссылку, которую я прочитал давным-давно! : Как мне закончить сеанс PHP через 30 минут?