Рекламный блок
Автоматическое завершение сессии в панели управления аккаунтом
Постановка задачи
Многие пользователи, как начинающие, так и "продвинутые" часто забывают выходить из аккаунта почты, панели управления сайтом и др. При этом такая ситуация часто происходит не на личном, а на общественном компьютере. Поэтому в любой системе требующей аутентификации обычно предусматривают возможность автоматического завершения сессии при не активности пользователя на протяжении некоторого, заранее определенного времени.
Решается данная задача очень просто. В конфигурационном файле определяете константу для хранения времени жизни сессии, имя любое, но так чтобы оно отражало суть хранимых данных, например, END_OF_WORK_SEC, при этом время указывается в секундах. Для пользователя лучше выводить сообщение в минутах, хотя почему-то программисты часто так не делают.define("END_OF_WORK_SEK", 1800);define("END_OF_WORK_MIN", END_OF_WORK_SEK / 60);
В модуле аутентификации запускаете сессию, определяете текущее время и сохраняете его в сессионной переменной.
Фрагмент кода из функции авторизации пользователя
$_SESSION['time'] = time();
Использование функции автозавершения сессии
Во всех файлах, доступ к которым возможен только после авторизации пользователя необходимо инициировать сессию и вызвать функцию AutoExit.
PHP-код функции AutoExit
В начале функции определяем текущее время и рассчитываем разность между ним и временем, сохраненным в сессионной переменной. Если разность превышает допустимый предел, то разрушаем сессию для данного скрипта, выводим пользователю информационное сообщение и завершаем работу скрипта.
В случае когда разность не превышает допустимый предел необходимо записать в сессионную переменную новое значение времени.
function AutoExit() {
$difference = $time - $_SESSION['time'];
if ($difference > END_OF_WORK_SEC) {
include_once("top1.php");
echo "<h2>Время не активности более ".END_OF_WORK_MIN." минут. Для продолжения работы необходимо авторизоваться</h2>";
// Здесь можно вызвать функцию аутентификации
// или сделать ссылку на страницу авторизации.
include_once("bottom1.php");
exit();
$_SESSION['time'] = $time;