Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ти I книги. Оператор echo, 
предназначенный для вывода данных в браузер, нам также хорошо знаком. Теперь 
осталось лишь разобрать, какие средства предусмотрены в PHP для работы с 
заголов- 
ками HTTP. 
Установка заголовков ответа 
Первая функция, которую мы сейчас рассмотрим, — Header() — предназначена для 
посылки заголовка браузеру (точнее, для добавления заголовка к документу, 
пересы- 
лаемому браузеру). Она может быть вызвана только до первой команды вывода сце- 
нария (конечно, если вы до этого не воспользовались функцией буферизации 
ob_start()). 
Вывод заголовка 
int Header(string $string) 
Обычно функция Header() является одной из первых команд сценария. Она предна- 
значена для установки заголовков ответа, которые будут переданы браузеру — по 
одному заголовку на вызов. Не забывайте, что вызов Header() обязательно должен 
осуществляться до любого оператора вывода в сценарии — в противном случае вы 
получите предупреждение. Заметьте, что текст вне  также рассматривается 
как оператор вывода, а потому старайтесь не делать лишних пробелов до первой 
"скобки"  во включаемом файле. Впрочем,
 
вы сможете легко обнаружить подобную ошибку, если выставите уровень контроля 
ошибок, равный 15 (1+2+4+8) — в этом случае при недопустимом вызове Header() 
вы получите предупреждение. Пример: 
// перенаправляет браузер на сайт PHP 
Header("Location: http://www.php.net"); 
// теперь принудительно завершаем сценарий, ввиду того, что после 
// перенаправления больше делать нечего 
exit; 

Часть IV. Стандартные функции PHP 290 
Запрет кэширования 
Еще одно полезное приложение функции Header() — запрет кэширования докумен- 
та браузером и Proxy-серверами. Большинство сценариев формируют документы, 
которые при каждом запуске программы изменяются. Очевидно, если браузер поль- 
зователя начнет кэшировать такие документы, ничего хорошего не получится. Вы- 
ход — использовать в начале сценария следующие команды: 
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Дата в прошлом 
Header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
Header("Pragma: no-cache"); // HTTP/1.0 
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT"); 
Самое неприятное то, что для полного запрета кэширования приходится всегда 
посы- 
лать 4 указанных заголовка, и ни один пропустить нельзя — в противном случае не 

сработает либо браузер, либо Proxy-сервер. Так что рекомендую оформить их все в 

виде функции (например, с именем NoCache()) и затем вызывать эту функцию в 
нужный момент. 
Получение заголовков запроса 
Для получения всех заголовков запроса (того самого запроса, что вынудил 
запустить- 
ся сценарий) следует воспользоваться функцией GetAllHeaders(): 
array GetAllHeaders() 
Функция GetAllHeaders() возвращает ассоциативный массив, содержащий данные 
о HTTP-заголовках запроса клиента, породившего запуск сценария. Ключи массива 
содержат названия заголовков, а значения — их величины. 
Вот пример использования этой функции: 
$headers = GetAllHeaders(); 
foreach($headers as $header=>$value) 
echo "$header: $value
\n"; Функция GetAllHeaders() поддерживается PHP только в том случае, если он установлен в виде модуля Apache. В противном случае этой функции про- сто не будет (да и не может быть, потому что обычный CGI-сценарий не имеет доступа к заголовкам запроса). В частности, в PHP для Windows (который ча- ще всего реализуют именно в виде сценария) функция GetAllHeaders() не- доступн
 
<<-[Весь Текст]
Страница: из 287
 <<-