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

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

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
видно, если 
вы 
собираетесь использовать заголовок Location, то никакого документа выводить не 
надо. 
Рекомендуется всегда указывать в заголовке Location абсолютный путь вме- 
сте с именем хоста, а не относительный. Дело в том, что, как показывает прак- 
тика, не все браузеры правильно реагируют на относительные пути и вытво- 
ряют все, что им заблагорассудится. 
В браузере Netscape имеется ошибка, проявляющаяся, когда сценарий выво- 
дит заголовок Location с указанием перейти на собственный URL (то есть, 
сам на себя, для этого даже придуман специальный термин — self-redirect). 
Такое решение не так бесполезно, как кажется, и используется, например, в 
гостевых книгах. В этом случае Netscape прекрасно принимает ответ сценария, 
но затем почему-то сообщает о том, что "документ не содержит данных". Как 
решить указанную проблему, см. в части V книги. 
Set-cookie 
Формат: Set-cookie: параметры_cookie 
Устанавливает Cookie в браузер пользователя. Позже в этой главе мы рассмотрим 
подробнее, что такое Cookies и как с ними работать. 
Date 
Формат: Date: Sat, 08 Jan 2000 11:56:26 GMT 
Указывает браузеру дату отправки документа. 

Часть I. Основы Web-программирования 46 
Server 
Формат: Server: Apache/1.3.9 (Unix) PHP/3.0.12 
Устанавливается сервером и указывает браузеру тип сервера и другую информацию о 

серверном программном обеспечении. 
Пример CGI-сценария 
Настало время привести небольшой сценарий на Си, который иллюстрирует некото- 
рые возможности, которые были описаны выше (листинг 3.1). 
Листинг 3.1. Простейший сценарий script.c 
#include  // Нужна для инициализации функции rand() 
#include  // Включаем поддержку функций ввода/вывода 
#include  // А это — для поддержки функции rand() 
// Главная функция. Именно она и запускается при старте сценария. 
void main(void) { 
// инициализируем генератор случайных чисел 
int Num; time_t t; srand(time(&t)); 
// в Num записывается случайное число от 0 до 9 
Num = rand()%10; 
// далее выводим заголовки ответа. Тип — html-документ 
printf("Content-type: text/html\n"); 
// запрет кэширования 
printf("Pragma: no-cache\n"); 
// пустой заголовок 
printf("\n"); 
// выводим текст документа — его мы увидим в браузере 
printf(""); 
printf("

Здравствуйте!

"); printf("Случайное число в диапазоне 0-9: %d",Num); printf(""); } Исходный текст можно откомпилировать и поместить в каталог с CGI-сценариями на сервере. Обычно стараются все сценарии хранить в одном месте — в каталоге cgibin, у которого имеется разрешение на выполнение всех файлов внутри него. Правда, это правило не является обязательным — конечно же, можно разместить файлы сце- нария где душе угодно (не забыв проставить соответствующие права на каталог в на- Глава 3. CGI изнутри 47 стройках сервера). На мой взгляд, логично хранить файлы сценариев там, где это наиболее вам удобно, а не пользоваться общепринятыми штампами. Теперь наберем в адресной строке браузера: http://www.myhost.com/cgi-bin/script.cgi Мы получим нашу HTML-страницу. Заметьте, что при нажатии Reload (а также при повторном посещении страницы) браузер перезагрузит страницу цели- ком, а не возьмет ее копию из своего кэша (это можно видеть по постоянно изме- няющемуся случайному числу или по лампочкам модема). Мы добились такого ре- зультата благодаря заголовку Pragma: no-cache Давайте теперь посмотрим, что нужно изменить в нашем сценарии, чтобы его вывод представлял из себя с точки зрения браузера не HTML-документ, а рисунок. Пусть нам нужен сценарий, который бы передавал пользователю какой-то GIF-рисунок (на- пример, выбираемый случайным образом из некоторого списка). Делается это абсо- лютно аналогично: выводим заголовок Content-type
 
<<-[Весь Текст]
Страница: из 287
 <<-