Компьютерные Технологии в Обучении

Изучение PHP на практических примерах

256 >>  Программирование
 

Автоматическое завершение сессии в панели управления аккаунтом

Постановка задачи

Многие пользователи, как начинающие, так и "продвинутые" часто забывают выходить из аккаунта почты, панели управления сайтом и др. При этом такая ситуация часто происходит не на личном, а на общественном компьютере. Поэтому в любой системе требующей аутентификации обычно предусматривают возможность автоматического завершения сессии при не активности пользователя на протяжении некоторого, заранее определенного времени.
Решается данная задача очень просто. В конфигурационном файле определяете константу для хранения времени жизни сессии, имя любое, но так чтобы оно отражало суть хранимых данных, например, END_OF_WORK_SEC, при этом время указывается в секундах. Для пользователя лучше выводить сообщение в минутах, хотя почему-то программисты часто так не делают. define("END_OF_WORK_SEK", 1800); define("END_OF_WORK_MIN", END_OF_WORK_SEK / 60);
В модуле аутентификации запускаете сессию, определяете текущее время и сохраняете его в сессионной переменной.

Фрагмент кода из функции авторизации пользователя

session_start(); $_SESSION['time'] = time();

Использование функции автозавершения сессии

Во всех файлах, доступ к которым возможен только после авторизации пользователя необходимо инициировать сессию и вызвать функцию AutoExit.

PHP-код функции AutoExit

В начале функции определяем текущее время и рассчитываем разность между ним и временем, сохраненным в сессионной переменной. Если разность превышает допустимый предел, то разрушаем сессию для данного скрипта, выводим пользователю информационное сообщение и завершаем работу скрипта.
В случае когда разность не превышает допустимый предел необходимо записать в сессионную переменную новое значение времени.
<?php function AutoExit() { $time = time(); $difference = $time - $_SESSION['time']; if ($difference > END_OF_WORK_SEC) { session_destroy(); include_once("top1.php"); echo "<h2>Время не активности более ".END_OF_WORK_MIN." минут. Для продолжения работы необходимо авторизоваться</h2>"; // Здесь можно вызвать функцию аутентификации // или сделать ссылку на страницу авторизации. include_once("bottom1.php"); exit(); } $_SESSION['time'] = $time; } ?>
 
ВебПрограммированиеГрафикаОфисные программыПедагогикаПеременаНаши баннеры
Терминология.
Логин (от англ. Log in) - 1. Вход, начало сеанса работы с системой. 2. Имя для входа в систему (см. аккаунт).
Человеческим родом правит воображение
Наполеон I
 
Город книг - аннотации книг по Photoshop, веб-дизайну, программированию для веб
Яндекс цитирования

© Олег Тыщенко, 2000-2017