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

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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
 image/gif 
Затем копируем один-в-один нужный нам GIF-файл в стандартный поток вывода 
(лучше всего — функцией fwrite, т. к. иначе могут возникнуть проблемы с "бинар- 

ностью" GIF-рисунка). Теперь можно использовать этот сценарий даже в таком кон- 

тексте: 
... какой-то текст страницы ... 
 
... продолжение страницы ... 
В результате таких действий в нашу страницу будет подставляться каждый раз слу- 

чайное изображение, генерируемое сценарием. Разумеется, чтобы избежать неприят- 

ностей с кэшированием, которое особенно интенсивно применяется браузерами по 
отношению к картинкам, мы должны его запретить выводом соответствующего заго- 
ловка. Именно так устроены графические счетчики, столь распространенные в Ин- 
тернете. 
Еще раз обращаю ваше внимание на такой момент: CGI-сценарии могут 
использоваться 
не только для вывода HTML-информации, но и для любого другого ее типа — начиная 
с 
графики и заканчивая звуковыми MIDI-файлами. Тип документа задается в 
единственном 
месте — заголовке Content-type. Не забывайте добавлять этот заголовок, в 
против- 
ном случае пользователю будет отображена стандартная страница сервера с сообще- 

нием о 500-й ошибке (для сервера Apache), из которой он вряд ли что поймет. 

Часть I. Основы Web-программирования 48 
Передача информации 
CGI-сценарию 
Проблема приема параметров, заданных пользователем (с точки зрения сценария — 
все равно, через форму или вручную), несколько сложнее. Мы уже частично 
затраги- 
вали ее и знаем, что основная информация приходит через заголовки, а также (при 

использовании метода POST) после всех заголовков. Рассмотрим эти вопросы под- 
робнее. 
Переменные окружения 
Непосредственно перед запуском сценария сервер передает ему некие переменные 
окружения с информацией. В определенных переменных содержатся некоторые заго- 
ловки, но, как уже говорилось, не все (получить все заголовки нельзя). Вот 
список 
наиболее важных переменных окружения (большинство из них мы уже рассматрива- 
ли, но сейчас будет полезно повториться и систематизировать весь наш список 
имен- 
но с точки зрения программиста). 
HTTP_ACCEPT 
В этой переменной перечислены все (во всяком случае, так говорится в документа- 

ции) MIME-типы данных, которые могут быть восприняты браузером. Как мы уже 
замечали, современные браузеры частенько ленятся и передают строку */*, что 
озна- 
чает, что они якобы понимают любой тип. 
HTTP_REFERER 
Задает имя документа, в котором находится форма, запустившая CGI-сценарий. Эту 
переменную окружения можно задействовать, например, для того, чтобы отслеживать 

перемещение пользователя по вашему сайту (а потом, например, где-нибудь 
распеча- 
тывать статистику самых популярных маршрутов). 
HTTP_USER_AGENT 
Идентифицирует браузер пользователя. Если в данной переменной окружения при- 
сутствует подстрока MSIE, то это — Internet Explorer, в противном случае, если 
в на- 
личии лишь слово Mozilla, — Netscape. 
HTTP_HOST 
Доменное имя Web-сервера, на котором запустился сценарий. Эту переменную окру- 
жения довольно удобно использовать, например, для генерации полного пути, кото- 

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

Глава 3. CGI изнутри 49 
(вообще говоря, чем меньше сценарий задействует "зашитую" в него информацию об 
имени сервера, на котором он запущен, тем лучше — в идеале ее не должно быть 
во- 
все). 
SERVER_PORT 
Порт сервера (обычно 80), к которому обратился браузер пользователя. Также 
может 
привлекаться для генерации параметра заголовка Location. 
REMOTE_ADDR 
Эта переменная окружения задает IP-адрес (или доменное имя) узла 
 
<<-[Весь Текст]
Страница: из 287
 <<-