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

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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
бы имело 
смысл об этом говорить. 
Вернемся к нашему предыдущему примеру. Теперь пользователь может указать свой 
часовой пояс сценарию, например, так: 
http://www.somehost.com/script.cgi?time=+5 
Сценарий с именем script.cgi, после того как он запустится и получит эту строку 

параметров, должен ее проанализировать (например, создать переменную time и 
присвоить ей значение +5, т. е. 5 часов вперед) и дальше работать как ему нужно.
 
Обращаю ваше внимание на то, что принято параметры сценариев указывать именно 
в виде переменная=значение. 
А если нужно передать несколько параметров (например, не только часовой пояс, 
но 
и имя пользователя)? Сделаем это следующим образом: 
http://www.somehost.com/script.cgi?time=+5&name=Vasya 
Опять же, принято разделять параметры с помощью символа &. Будем в дальнейшем 
придерживаться этого соглашения, поскольку именно таким образом поступают брау- 

зеры при обработке форм. (Видели когда-нибудь на странице несколько полей ввода 

и переключателей, а под ними кнопку "Отправить"? Это и есть форма, с ее помощью 

можно автоматизировать процесс передачи данных сценарию). Ну и, разумеется, 
сце- 
нарий опять же должен адекватно среагировать на эти параметры: провести разбор 
строки, создать переменные и т. д. Обращаю ваше внимание на то, что все эти 
дейст- 
вия придется программировать вручную, если мы хотим воспользоваться языком Си. 
Так вот, такой способ посылки параметров сценарию (когда данные помещаются в 
командную строку URL) называется методом GET. Фактически, даже если не переда- 
ется никаких параметров (например, при загрузке статической страницы), все 
равно 
применяется метод GET. Все? Нет, не все. Существует еще один распространенный 
способ (не менее распространенный) — метод POST, но давайте прежде рассмотрим, 
на каком языке "общаются" браузер и сервер. 
Заголовки и метод GET 
Задумаемся на минуту, что же происходит, когда мы набираем в браузере строку 
somestring и нажимаем . Браузер посылает серверу запрос somestring? 
Нет, конечно. Все немного сложнее. Он анализирует строку, выделяет из нее имя 
сер- 
вера и порт (а также имя протокола, но нам это сейчас не интересно), 
устанавливает 
соединение с Web-сервером по адресу сервер:порт и посылает ему что-то типа сле- 

дующего: 
GET somestring HTTP/1.0\n 

Глава 2. Интерфейс CGI 31 
...другая информация... 
\n\n 
Здесь \n означает символ перевода строки, а \n\n — два обязательных символа но- 

вой строки, которые являются маркером окончания запроса (точнее, окончания 
заго- 
ловков запроса). Пока мы не пошлем этот маркер, сервер не будет обрабатывать 
наш 
запрос. 
Как видим, после GET-строки могут следовать и другие строки с информацией, раз- 

деленные символом перевода строки. Их обычно формирует браузер. Такие строки 
называются заголовками (headers), и их может быть сколько угодно. Протокол HTTP 

как раз и задает правила формирования и интерпретации этих заголовков. 
Вот мы и начинаем знакомство с протоколом HTTP. Как видите, он представляет со- 

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

Именно так и должен поступать CGI-сценарий, когда захочет узнать значение того 
или иного заголовка запроса. К сожалению, набор передаваемых сценарию заголов- 
ков ограничен стандартами, и некоторые заголовки нельзя получить из сценария 
ни- 
каким способом (ему просто недоступна соответствующая переменная окружения). 
Такие случаи мы будем оговаривать особо. 
Если быть до конца честным, то все-таки системный администратор может на- 
строить сервер так, чтобы он посылал сценарию и те заголовки, которые по 
стандарту не передаются. Однако это выходит далеко за рамки Web- 
программирования, поэтому мы 
 
<<-[Весь Текст]
Страница: из 287
 <<-