Установление подлинности HTTP
Ловушки HTTP аутентикации в PHP/FI доступны только в случае, если пакет
выполняется как модуль Apache. В программе для PHP/FI в виде модуля Apache ,
возможно использование команда Header() , чтобы послать сообщение
"Authentication Required" к броузеру пользователя, которое
приведет к появлению окна ввода с запросом Пользователь/Пароль
(Username/Password). Как только пользователь ввел свое имя и пароль, URL,
содержащий PHP/FI скрипт будет вызыван снова с переменными, $PHP_AUTH_USER,
$PHP_AUTH_PW и $PHP_AUTH_TYPE установленными соответственно имени
пользователя, его паролю и типу аутентикации. Только На текущий момент
поддерживается только "Базовая"("Basic") аутентикация.
Фрагмент примерa скрипта , который запросит аутентикацию пользователя при
обращении к странице:
<?
if(!$PHP_AUTH_USER) {
Header("HTTP/1.0 401 Unauthorized");
Header("WWW-authenticate: basic realm=\"My Realm\"");
exit;
} else {
echo "Hello $PHP_AUTH_USER.<P>";
echo "You entered $PHP_AUTH_PW as your password.<P>";
}
>
Вместо простого вывода $PHP_AUTH_USER и $PHP_AUTH_PW, вам возможно захочется
проверить правильность имени пользователя и пароля. Возможно, посылая запрос
к базе данных, или, осуществляя поиск пользователя в dbm файле.
Чтобы предотвратить вариант что кто-либо напишет скрипт, который показывает
пароль для страницы, аутентикация которой была через традиционный внешний
механизм, переменные PHP _AUTH не будут установлены в том случае, если
рарешена внешняя аутентикация для этой конкретной страницы.
Обратите внимание однако, что вышесказанное не мешает кому-либо, кто
контролировал не-аутентифицированные URL украсть пароль от
аутентифицированных URL на том же самом сервере. PHP_AUTH_VARS определяется
в php.h, может быть установлена в "неопределена", для того чтобы
быть уверенным, что эти переменные никогда не будут установлены и таким
образом отключить возможность использования mod_php для того чтобы пытаться
украсть пароли.
[Назад]
[Содержание]
[Вперед]