|
о более
подробно. Фактически, до недавнего времени все 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
На самом деле существуют некоторые ограничения на длину строки парамет-
ров. Но нам приходится сталкиваться с ними слишком редко, чт
|
|