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

Авторизация с помощью заголовка

И наконец, завершим работу с текущей страницей – нам ведь не нужно выполнять тот код, что дальше; он ведь должен быть доступен только авторизованным посетителям. Для выхода используем команду exit:

exit; }

Она полностью прекращает как вывод web-страницы посетителю, так и выполнение какого-либо кода. Вот, собственно, и все:

?>

Для наглядности – все строчки кода вместе:

<?php
if (($ PHP_AUTH_USER! = "log in") | | ($ PHP_AUTH_PW! = "parol"))
{
Header("WWW-Authenticate: Basic realm=\"Защищенная зона"\"");
Header("HTTP/1.0 401 Unauthorized");

…текст страницы, выдающейся посетителю в случае нажатия им кнопки "Отмена"…

exit;
}?>

Указание логина и пароля в самом тексте PHP-сценария – простой, но не очень удобный способ их хранения. В самом деле – если вы планируете предоставить доступ нескольким посетителям, то вам придется давать им одну и ту же пару логина и пароля. Это чревато тем, что при необходимости отказать кому-нибудь из них в доступе придется менять пароль, о чем придется сообщать всем остальным.

Ниже приводится небольшой код, реализующий проверку содержимого авторизационных переменных на совпадение с какой-нибудь парой "логин-пароль" из специального файла паролей.

Допустим, файл, содержащий логины и пароли, располагается в папке passw и называется passwr, а формат его прост – запись типа "логин пароль" (через пробел) на каждой строчке (см. рис. 8.3). Для того, чтобы этот файл нельзя было загрузить через web-интерфейс, просто набрав его имя (и тем самым получив на экран все его содержимое), можете сделать это имя как можно более длинным и заковыристым (все равно оно фигурирует только в программном коде, т. е. из Сети его узнать будет никак нельзя), а можете просто запретить чтение данного файла из Web, соответственно установив его атрибуты, например, в 770 (в CuteFTP это делается пунктом CHMOD из контекстного меню файла, рис. 8.4).

Примечание
Еще запретить чтение содержимого директорий из Web можно, указав в файле настроек web-сервера Apache (именующемся httpd.conf) в разделе описания соответствующего виртуального сервера параметр Location (например:

<Location /passw>
deny from all
</Location>

…в три строки), однако доступ к файлу настроек web-сервера есть не всегда.

Иллюстрированный самоучитель по PHP › Авторизация доступа › Авторизация с помощью заголовка
Рис. 8.3. Простейший файл паролей

Иллюстрированный самоучитель по PHP › Авторизация доступа › Авторизация с помощью заголовка
Рис. 8.4. Чтобы файл не "достали" из Интернета, установите его параметры вот так…

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