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

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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
о более 
подробно. Фактически, до недавнего времени все Web-программирование представ- 
ляло собой программирование CGI-приложений. В последнее время ситуация изме- 
нилась. И хотя CGI все еще остается негласным стандартом для Web-приложений, 
механизм работы CGI-программ несколько обновился. 
В этой и следующей главах мы будем разбирать основы традиционного CGI- 
программирования, не касаясь напрямую PHP. В качестве языка для примеров вы- 
бран Си, поскольку его компиляторы можно найти практически в любой операцион- 
ной системе, и по той причине, что он "наиболее красиво" показывает, почему… 
его 
не следует использовать в Web-программировании. Да-да, это не опечатка. Вскоре 
вы 
поймете, что я хотел сказать. 
Что такое CGI? 
Итак, мы набираем в нашем браузере 
http://www.somehost.com:80/path/to/document.ext 
Мы ожидаем, что сейчас получим HTML-документ (или документ другого форма- 
та — например, рисунок). Иными словами, мы рассчитываем, что на хосте в 
каталоге 
/path/to/ расположен файл document.ext, который нам сейчас и доставят (пере- 
даст его, кстати, Web-сервер, подключенный к порту 80 на сервере). 
Однако на самом деле ситуация несколько иная. По двум причинам. 
r Путь /path/to/, ровно как и файл document.ext на хосте может вообще не 
существовать. Ведь администратор сервера имеет возможность задать псевдоним 
(alias) для любого объекта на сервере. Кроме того, даже если и не назначено 
ника- 
кого псевдонима, все равно имеется возможность так написать программы для 
Web-сервера, что они будут "перехватывать" каждое обращение к таким путям и 
соответствующим образом реагировать на это (пример рассмотрен в главе 1 ). 
r Файл document.ext может быть вовсе не текстовым документом, а программой, 
которая в ответ на наш запрос молниеносно запустится, не менее стремительно 

Глава 2. Интерфейс CGI 29 
выполнится и возвратит пользователю результаты своей работы, хотя бы в том же 
HTML-формате (или, разумеется, в любом другом, — например, это может быть 
изображение). Пользователь и не догадается, что на самом деле произошло. Для 
него все равно, загружает ли он документ или невольно запускает программу. Бо- 
лее того, он никак не сможет узнать, что же на самом деле случилось. 
Последний пункт особенно впечатляющ. Если вы прониклись его идеей, значит, вы 
поняли в общих чертах, что такое CGI. Как раз CGI обеспечивает все то, что 
выгля- 
дит так прозрачно для пользователя. Традиционно программы, работающие в соот- 
ветствии с соглашениями CGI, называют сценариями — скорее всего из-за того, что 
в 
большинстве случаев их пишут на языках-интерпретаторах, подобных Basic (напри- 
мер, на Perl или PHP). 
Задумаемся на мгновенье. Мы получили довольно мощный механизм, который по- 
зволяет нам, в частности, формировать документы "на лету". К примеру, пусть нам 

нужно, чтобы в каком-то документе проставлялись текущая дата и время. 
Разумеется, 
мы не можем заранее прописать их в документе — ведь в зависимости от того, 
когда 
он будет загружен пользователем, эта дата должна меняться. Зато мы можем напи- 
сать сценарий, который вычислит дату, вставит ее в документ и затем передаст 
его 
пользователю, который даже ничего и не заметит! 
Однако в построенной нами модели не хватает одного звена. Действительно, 
предпо- 
ложим, нам нужно, чтобы время в нашей странице проставлялось на основе часового 

пояса пользователя. Но как сценарий узнает, какой часовой пояс у региона, в 
котором 
живет этот человек (или какую-нибудь другую информацию, которую может предос- 
тавить пользователь)? Видимо, должен быть какой-то механизм, который позволит 
пользователю не только получать, но также и передавать информацию серверу (в 
данном случае, например, поправку времени в часах относительно Москвы). И это 
тоже обеспечивает CGI. Но вернемся прежде снова к URL. 
Секреты URL 
Помните, я выше описывал, как выглядит URL? Каюсь, приврал. На самом деле URL 
имеет более "длинный" вид: 
http://www.somehost.com:80/path/to/document.ext?parameters 
Как нетрудно заметить, может существовать еще строка parameters, следующая 
после вопросительного знака. В некоторой степени эта строка аналогична 
командной 
строке ОС. В ней может быть все, что угодно, она может быть любой длины (однако 

следует учитывать, что некоторые символы должны быть URL-закодированы, см. 
ниже). Вот как раз эта-то строка и передается CGI-сценарию. 

Часть I. Основы Web-программирования 30 
На самом деле существуют некоторые ограничения на длину строки парамет- 
ров. Но нам приходится сталкиваться с ними слишком редко, чт
 
<<-[Весь Текст]
Страница: из 287
 <<-