РНР 5 в подлиннике

Страница 39 из 554


80

Часть I. Основы Web-программирования

Это может быть полезно, если страница содержит, например, динамический счетчик посещений.

Заголовок Pragma используется также и для других целей (и соответственно, после двоеточия находятся иные значения строки), но мы не будем их здесь рассматривать.

Location

Формат:

Location: http://www.otherhost.com/somepage.html

Этот заголовок особенный и определяет, что браузер пользователя должен немедленно перейти по указанному адресу, не дожидаясь тела документа ответа (как будто бы пользователь сам набрал в адресной строке нужный URL). Так что если вы собираетесь использовать заголовок Location, то никакого документа выводить не надо.

Замечание )

Рекомендуется всегда указывать в заголовке Location абсолютный путь вместе с именем хоста, а не относительный. Дело в том, что, как показывает практика, не все браузеры правильно реагируют на относительные пути и вытворяют все, что им заблагорассудится.

Внимание!

В браузере Netscape имеется ошибка, проявляющаяся, когда сценарий выводит заголовок Location с указанием перейти на собственный URL (т. е. сам на себя, для этого даже придуман специальный термин — self-redirect). Такое решение не так бесполезно, как кажется, и используется, например, в гостевых книгах. В этом случае браузер Netscape прекрасно принимает ответ сценария, но затем почему-то сообщает о том, что "документ не содержит данных". Как решить указанную проблему, см. в части VII.

Set-cookie

Формат:

Set-cookie: параметры_соок1е

Устанавливает cookie в браузер пользователя. В конце этой главы (см. разд. "Что такое cookies и "с чем их едят"?") мы рассмотрим подробнее, что такое cookies и как с ними работать.

Date

Формат:

Date: Sat, 08 Jan 2000 11:56:26 GMT

Указывает браузеру дату отправки документа.

Server

Формат:

Server: Apache/1.3.9 (Unix) PHP/3.0.12

Гпава 3. CGI изнутри

81

Устанавливается сервером и указывает браузеру тип сервера и другую информацию о серверном программном обеспечении.

Примеры CGI-сценариев на С

Настало время привести небольшой сценарий на С, иллюстрирующий некоторые возможности, которые были описаны выше (листинг 3.1).

\ Листинг 3.1. Файл c/script.c

// Простейший сценарий script.с

#include <time.h> // Директива нужна для инициализации функции rand() #include <stdio.h> // Включаем поддержку функций ввода/вывода #include <stdlib.h> // А это — для поддержки функции rand()

// Главная функция. Именно она и запускается при старте сценария, void main(void) {

// инициализируем генератор случайных чисел

int Num; time_t t; srand(time(&t));

//в Num записывается случайное число от 0 до 9

Num = rand()%10;

// далее выводим заголовки ответа printf("Content-type: text/html\n"); // запрет кэширования данных браузером printf("Pragma: no-cache\n"); // пустой заголовок printf("\n");

// выводим текст документа — его мы увидим в браузере

printf ("<htmlxbody>") ;

printf("<п!>3дравствуйте!</hl>") ;

printf("Случайное число в диапазоне 0-9: %d",Num); printf ("</bodyx/html>") ;

}

Исходный текст можно откомпилировать и поместить в каталог с CGI-сценариями на сервере. Обычно стараются все сценарии хранить в одном месте — в каталоге cgi-bin, у которого имеется разрешение на выполнение всех файлов внутри него. Правда, это правило не является обязательным — конечно же, можно разместить файлы сценария где душе угодно (не забыв проставить соответствующие права на каталог в настройках сервера). На наш взгляд, логично хранить файлы сценариев там, где это наиболее вам удобно, а не пользоваться общепринятыми штампами. Теперь наберем в адресной строке браузера:

http://www.inyhost.com/cgi-bin/script.cgi

Мы получим нашу HTML-страницу. Заметьте, что при нажатии кнопки Reload (а также при повторном посещении страницы) браузер перезагрузит страницу целиком, а не возьмет ее копию из своего кэша (это можно видеть по постоянно изменяющемуся случайному числу или по лампочкам модема). Мы добились такого результата благодаря заголовку Pragma: no-cache



  • Курсы, семинары, тренинги гирокомпас в Санкт-Петербурге

  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006