Теперь, когда вы знаете, как защитить страницу, можно приступить к запросу защищенной страницы. Как было сказано ранее, функция fopen позволяет задавать имя пользователя и пароль в качестве части URL, но можно столкнуться и с более сложной ситуацией, в которой понадобится обратиться к функции fsockopen. Необходим заголовок запроса аутентификации. Значением этого заголовка являются разделенные двоеточием имя пользователя и его пароль. В соответствии со спецификацией HTTP эта строка представлена в кодировке base64.
Сценарий в листинге 24.2 обращается к сценарию в листинге 24.1. Для того чтобы он заработал на вашем Web-сервере, может потребоваться изменить URI. Сценарий предполагает, что вы установили все примеры на Web-сервере в каталоге /corephp/ listings. Если у вас вызывает недоумение то, что каждая строка завершается rn, хочу напомнить, что все строки, отправленные на HTTP-серверы, должны завершаться символами "возврат каретки" и "перевод строки".
Листинг 24.2. Запрос защищенного документа
<html> <head>
^^^хЛистинг 24.2</title>
</head>
<body>
<pre>
<?php
// Открыть сокет
if(!($fp = fsockopen("localhost", 80)))
{
print("Открыть сокет невозможно!<br>n"); exit;
}
// запросить документ
fputs($fp, "HEAD /corephp/listings/24-1.php HTTP/1.0rn"); // отправить имя пользователя и его пароль fputs($fp, "Authorization: Basic " . base64_encode("leon:secret") .
"rn");
// завершить запрос fputs($fp, "rn"); // вывести ответ сервера fpassthru($fp);
?>
</pre>
</body>
</html>
24.2. Управление кэш-памятью браузера
Одним из ограничений, влияющих на создание динамических Web-страниц, является поведение кэш-памяти. Браузеры имеют свою собственную кэш-память и по умолчанию могут проверять новую версию страницы только один раз во время одного сеанса. Кроме того, некоторые провайдеры услуг Internet имеют свою собственную кэш-память. Это делается для того, чтобы избежать излишней передачи страниц. Однако если содержимое вашей страницы может измениться после получения каждого запроса, появление старой страницы будет раздражать. Разрабатывая Web-узел электронной коммерции, необходимо помнить, что повторная обработка каждой страницы является критичной.
С другой стороны, ваша страница может динамически создавать страницу с информацией, которая может не меняться слишком часто. Мой опыт подтверждает то, что имеет смысл сохранять URL, представляющие собой обычные HTML-файлы и не имеющие переменных, которые следуют за знаком вопроса. Хотя PHP может использовать и URL. Если информация на таких страницах меняется редко, об этом необходимо сообщить менеджеру кэш-памяти.
Протокол HTTP 1.1 описывается в документе RFC 2616, который представляет несколько заголовков, предназначенных для управления кэш-памятью. В листинге 24.3 показано, какие заголовки необходимо отсылать для того, чтобы предотвратить кэширование страниц. Заголовок Last-Modified содержит информацию о времени последней модификации документа, и установка его времени, равным текущему, сообщает браузеру о том, что версия этой страницы является свежей. Заголовок Expires сообщает браузеру о том, когда данный документ устареет и будет запрошен повторно. И опять используется текущее время, в надежде, что браузер будет хранить документ вне кэш-памяти. Вероятно, самый главный заголовок, Cache-Control, сообщает браузеру, каким образом можно кэшировать страницу. В этом случае мы сообщаем, чтобы страница не кэшировалась. Четвертый заголовок не предназначен для старых браузеров, которые работают только с протоколом HTTP 1.0. Попробуйте быстро перезагрузить сценарий из листинга 24.3, и вы увидите, как изменяется дата.
| Листинг 24.3. Отправка заголовков для предотвращения кэширования_
<?php
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate "); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
?>
<html> <head>
^^^хЛистинг 24.3</title>
</head>
<body>
Текущее время <?php print(date("D, d M Y H:i:s")); ?><br>
</body>
</html>
ТОП-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-аутентификация,Управление кэш-памятью браузера,Установка типа документа. Часть Вторая.
05-06-2015