Почти все, что создается с помощью PHP, работает в сетевой среде. Первоначально этот язык был представлен как средство создания HTML-документов с использованием протокола HTTP. PHP позволяет кодировать так, что вам не нужно думать о протоколах нижнего уровня, но он также позволяет вам по необходимости работать и с этими протоколами. В этой главе речь пойдет о двух важных протоколах, HTTP и SMTP, которые предназначены для передачи Web-документов и электронной почты. В данной главе описывается несколько общих проблем и предлагаются способы их решений. Кроме того, вы узнаете о защите Web-страниц с помощью основной HTTP-аутентификации и о том, как использовать HTTP-заголовки и осуществлять обмен данными с удаленными серверами.
24.1. HTTP-аутентификация
Опыт работы с Web-приложениями обязательно дает опыт работы с HTTP-аутен-тификацией. Вы запрашиваете страницу, и появляется небольшое окно, запрашивающее имя пользователя и его пароль. Как вы узнали в главе 9, "Операционная система", для открытия URL в PHP используется функция fopen. Имя и пароль можно задать в URL так же, как и в окне location браузера Navigator. Аутентификация осуществляется с помощью HTTP-заголовков, а защитить PHP-страницы можно с помощью функции header.
Для защиты страницы с помощью основной HTTP-аутентификации необходимо отправить два заголовка. Заголовок WWW-Authenticate сообщает браузеру о том, что требуется ввод имени пользователя и пароль, и определяет область, группирующую страницы. Имя пользователя и его пароль будут соответствовать всей группе, поэтому пользователям не требуется аутентифицировать себя при каждом обращении к страницам из этой группы. Другим заголовком является status, который должен иметь значение HTTP/1.0 4 01 Unauthorized. Сравните его с таким обычным заголовком, как HTTP/1.0 2 00 OK.
В листинге 24.1 приведен пример защиты одной страницы. HTML-код, предназначенный для создания страницы, объединен в функции, так как он должен сообщать об успешном завершении аутентификации. PHP автоматически создает элементы PHP_AUTH_USER и PHP_AUTH_PW массива _SERVER, если браузер передает имя пользователя и его пароль. В данном примере - это пользователь leon и пароль secret. Более сложная схема предполагает сравнение имени пользователя и его пароля с данными, хранящимися в файле или базе данных.
Листинг 24.1. Запрос аутентификации
<?php /*
** Определение функций, предназначенных для ** начала и окончания HTML-документа
*/
function startPage() {
print("<html>n"); print("<head>n");
print("<title>Листинг 24.1</title>n"),-
print("</head>n");
print("<body>n");
}
function endPage()
{
print("</body>n");
print("</html>n");
}
/*
** проверка имени пользователя и его пароля
*/
if(($_SERVER['PHP_AUTH_USER'] == "leon") AND ($_SERVER['PHP_AUTH_PW] == "secret"))
{
startPage();
print("Успешная регистрация!<br>n"); endPage();
}
else
{
//Отправить заголовки, чтобы браузер //запросил имя и пароль пользователя header("WWW-Authenticate: " .
"Basic realm="Leon's Protected Area"");
header("HTTP/1.0 401 Unauthorized");
//Отобразить текст ошибки, который браузер обычно //отображает после нескольких ошибочных попыток регистрации print("Эта страница защищена HTTP-аутентификацией " .
".^^^Работайте как пользователь <b>leon</b> " .
", с паролем <b>secret</b>" .
".<br>n");
}
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Сети:HTTP-аутентификация,Управление кэш-памятью браузера,Установка типа документа
04-06-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Интеграция баз данных. Часть Восьмая. | PHP. Сети:HTTP-аутентификация,Управление кэш-памятью браузера,Установка типа документа. Часть Вторая. |