Сценарий авторизации
Алгоритм сценария прост. После определения допустимости полученных от посетителя каким бы то ни было образом (вводом в форму или в диалоговое окно авторизации) логина и пароля открывается сессия и в ней регистрируется переменная – указатель на успешную авторизацию, которой присваивается определенное значение. На каждой странице "защищенной зоны" проверяется значение полученной с данными сессии этой переменной (а, как вы помните, берется оно не из отправляемых браузером посетителя данных, а из созданного во временной директории сервера файла с данными сессии – браузер посетителя сообщает лишь идентификатор этого файла), и если оно совпадает с обозначающим успешную авторизацию, то посетитель допускается к работе со страницей, если же нет – то доступ к странице не разрешается. На странице "выхода" из защищенной зоны располагается команда session_destroy ();, после выполнения которой идентификатор сессии "забывается" сервером и передача Сценарию переменной – указателя на успешную авторизацию более не происходит – до нового прохождения авторизации.
Начало сценария на странице проверки логина с паролем может быть таким:
<?php foreach (file("passw/passwr") as $k) {if (substr($k, 0, -2)=="$PHP_AUTH_USER $PHP_AUTH_PW") {$rez=1;}} if ($rez!=1) {Header("WWW-Authenticate: Basic realm=\"Защищенная зона"\""); Header("HTTP/1.0 401 Unauthorized"); …текст страницы, выдающейся посетителю в случае нажатия им кнопки "Отмена"… exit,-}
…или таким (если логин и пароль передаются из формы в переменных Slogin и Spass):
<?php foreach (file("passw/passwr") as $k) {if (substr($k, 0, -2)=="$login $pass"){$rez=l; if ($rez!=l) {…текст страницы, выдающейся посетителю в случае ввода неправильных логина и пароля… exit;}
Оба варианта были подробно рассмотрены в двух предыдущих разделах этой главы. В результате их выполнения нижеследующий текст сценария будет выполняться только в том случае, если введенные посетителем логин или пароль есть в файле логинов и паролей (имеющем в данном случае имя "passwr").
Продолжение же сценария довольно простое. Создаем сессию…
session_start();
…регистрируем переменную:
session_register("auth");
…и устанавливаем ей определенное значение – дабы потом его и проверять.
$auth=1;
Собственно, и все.
?>
Дальше следует текст страницы, которую посетитель должен увидеть сразу же после успешной авторизации.