Иллюстрированный самоучитель по PHP

Сценарий авторизации

Алгоритм сценария прост. После определения допустимости полученных от посетителя каким бы то ни было образом (вводом в форму или в диалоговое окно авторизации) логина и пароля открывается сессия и в ней регистрируется переменная – указатель на успешную авторизацию, которой присваивается определенное значение. На каждой странице "защищенной зоны" проверяется значение полученной с данными сессии этой переменной (а, как вы помните, берется оно не из отправляемых браузером посетителя данных, а из созданного во временной директории сервера файла с данными сессии – браузер посетителя сообщает лишь идентификатор этого файла), и если оно совпадает с обозначающим успешную авторизацию, то посетитель допускается к работе со страницей, если же нет – то доступ к странице не разрешается. На странице "выхода" из защищенной зоны располагается команда 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;

Собственно, и все.

?>

Дальше следует текст страницы, которую посетитель должен увидеть сразу же после успешной авторизации.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.