Вызов функции / обработчика, когда сеанс разрушен

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

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

Мне нужен обработчик / функция, которая будет вызываться, когда сессия становится недействительной / уничтожена. Как я могу это сделать?

Я знаю, что есть функция с именем session_set_save_handler, но мне нужна только функция уничтожения. Не нужны другие функции, и могу ли я получить доступ к переменным $ _SESSION в этой функции? Потому что в этой переменной сохраняется идентификатор пользователя, флаг которого необходимо сбросить.

Спасибо за помощь.

-1

Решение

Поскольку в PHP нет процесса, который может проверять ваши сеансы в фоновом режиме, вы должны использовать задание cron для проверки ваших устаревших сеансов или же функцию, которая вызывается каждый раз, когда кто-либо обращается к сайту, который сбрасывает все устаревшие сеансы. Ни один не идеален.

Вместо того, чтобы беспокоиться о работе cron, почему бы просто не проверить сеанс во время входа в систему? Вместо простого флага используйте поле DATETIME, которое вы можете проверить на предмет устаревания. Назовите поле как «last_accessed» и обновите его до NOW () каждый раз, когда пользователь что-то делает в системе. Затем, когда они идут, чтобы войти в другой браузер, если «last_accessed» < 10 минут или любой другой промежуток времени, который вы выбрали, не разрешайте вход в систему, но если он истек, следует разрешить вход и обновить временную метку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]