Главная » 2016 » Июнь » 20 » Таймауты сессий
13:25
Таймауты сессий
После входа на сайт с повышенной защитой пользователи не должны там оставаться постоянно. Если кто-то открыл сессию PayPal, а потом отошел от компьютера, кто угодно может подойти к компьютеру и произвести не-желательные транзакции. Поэтому на таких сайтах устанавливается время жизни сессии, чтобы автоматически закрывать сессии пользователей через определенное время (например, через 10 минут). С другой стороны, если ваш сайт не требует высокой степени защиты, то короткое время жизни сессии только раздражает пользователей. Для реализации таймаутов сессии используются две функции. Заметьте, что переменные, хранящие значения таймаута, должны храниться только в сессии, а не в Cookies - мы не можем доверить эти переменные браузеру пользователя. Первая функция проверяет правильность входа сессии: function login_validate() { /* Устанавливаем timeout сессии */ /* По умолчанию timeout равен 10 мин. (600 сек.) */ @session_start() ; $timeout = 600; $_SESSION["e;expires_by"e;] = timet) + $timeout; } Примечание. Если вы уверены, что сессия уже началась до вызова этой функции, удалите вызов @session_start () . Вторая функция проверяет, не истекла ли сессия. Если сессия правильна, функция сбрасывает таймаут: function login_check() { @session_start() ; /* Проверяем, не истекла ли сессия. */ $exp_time = intval($_SESSION["e;expires_by"e;]); if (time() < $exp_time) { /* Сессия еще не истекла. */ login_validate(); return true; } else { /* Сессия истекла; удаляем переменные сессии. */ unset($_SESSION["e;expires_by"e;]); return false; } } Две функции нужны, потому что, когда пользователь входит в первый раз, нужно сначала установить таймаут с помощью login_validate (). Не-смотря на то, что установка таймаута - очень простой процесс, важно, чтобы он был не противоречивым. Использовать login__check () предельно просто. Вот пример защиты страниц: если проверка логина сессии не прошла, мы заставляем пользователя войти в систему - перенаправляем на login.php: <? if (!login_check()) { header("e;Location: login.php"e;); exit(0); } ?> Помните, что вы должны запустить session_start () в самом начале сценария, перед выводом заголовков. Эти функции игнорируют ошибки от session_start (), потому что могут иметься предыдущие обращения session_start().
Просмотров: 447 | Добавил: AdnrNick | Рейтинг: 0.0/0
Всего комментариев: 0
avatar