stones.gif (8081 байт)

Ваша СGI-программа в контексте

Когда Вы, работая со своим браузером, щелкаете на какой-либо ссылке, помните, что с этой ссылкой связан универсальный локатор ресурса , URL ( Uniform Resource Locator ). Этот URL указывает на Web-сервер и ресурс, доступный через данный сервер. Таким образом, браузер взаимодействует с сервером, запрашивая указанный ресурс. Если, скажем, ресурс представляет собой HTML-форму, предназначенную для заполнения, то Web-сервер загружает эту форму в браузер, который затем выводит ее на экран, чтобы Вы могли ввести требуемые данные.

Каждое предназначенное для ввода текста поле в этой форме имеет имя (указанное в HTML-коде формы) и соответствующее значение , которым является все, что Вы вводите в этом поле. Сама форма связана (через HTML-директиву <form> ) с CGI-программой, которая обрабатывает данные, введенные в форму. Когда Вы, заполнив форму, щелкаете на кнопке Submit , браузер обращается к URL CGI-программы. Перед этим он добавляет в конец URL так называемую строку запроса , которая состоит из одной или более пар имя=значение; каждое имя — это имя поля, предназначенного для ввода текста, а каждое значение — данные, которые вы ввели. Таким образом, URL, в который браузер передает данные, введенные Вами в форму, выглядит приблизительно так (строкой запроса считается все, что стоит после вопросительного знака):

http://www.ГДЕ.org/cgi-bin/какая-то_cgi-программа?flavor=vanilla&size=double

Вы видите здесь две пары имя=значение. Такие пары отделяются друг от друга амперсандом ( & ). Работая с модулем CGI.pm, об этой детали можете не беспокоиться. Компонент /cgi-bin/какая-то_cgi-программа мы рассмотрим немного позднее; на данный момент важно лишь то, что он содержит путь к CGI-программе, которая будет обрабатывать данные, введенные в HTML-форму.

Когда Web-сервер (в данном случае www.ГДЕ.org ) получает URL от Вашего браузера, он вызывает указанную CGI-программу и передает в нее в качестве аргументов пары имя=значение. Программа затем делает то, что должна делать, и (как правило) возвращает HTML-код серверу, который, в свою очередь, загружает его в браузер для представления пользователю.

"Переговоры" между браузером и сервером, а также между сервером и CGI-программой ведутся в соответствии с протоколом, известным как HTTP . При написании CGI-программы об этом беспокоиться не нужно, т.к. модуль CGI.pm сам решает все вопросы, связанные с использованием протокола.

Способ получения CGI-программой ее аргументов (и другой информации) от браузера через сервер описывается спецификацией Common Gateway Interface . Об этом тоже не нужно беспокоиться; как Вы вскоре увидите, CGI.pm автоматически обрабатывает эти аргументы, не требуя от Вас каких-либо дополнительных действий.

Наконец, Вам следует знать, что CGI-программы могут работать с любым HTML-документом, а не только с формой. Например, Вы могли бы написать такой HTML-код:

Щелкните <a href="http://www.ГДЕ.org/cgi-bin/fortune.cgi">здесь</a>, чтобы узнать свою судьбу.

Здесь fortune.cgi — программа, которая просто вызывает программу fortune (в UNIX-системах). В данном случае в CGI-программу не вводятся никакие аргументы. Другой вариант: HTML-документ мог бы содержать две ссылки для пользователя — одну для получения предсказания судьбы, вторую для выяснения текущей даты. Обе ссылки могли бы указывать на одну и ту же программу — в одном случае с аргументом fortune , поставленным в URL после вопросительного знака, а в другом случае — с аргументом date . Эти HTML-ссылки выглядели бы так:

<а href="http://www.ГДЕ.org/cgi-bin/fortune_or_date?fortune"> <a href="http://www.SOMEWHERE.org/cgi-bin/fortune_or_date?date">

CGI-программа (в данном случае fortune_or_date ) определила бы, какой из двух возможных аргументов получен, и выполнила бы соответственно программу fortune или программу date .

Как видите, аргументы вовсе не должны иметь формат имя=значение, характерный для HTML-форм. Вы можете написать CGI-программу, которая будет делать практически все, что Вы пожелаете, и можете передавать ей практически любые аргументы.

<< Предыдущая страница Содержание Наверх Следующая страница >>

stones.gif (8081 байт)
2000, "Язык Perl. Создание CGI-скриптов на Perl." . Использованы материалы книг: Маслов В.В. Основы программирования на языке Perl - М.: Радио и связь, Горячая линия - Телеком. 1999. - 144 c.: - ISBN 5-256-01356-4; Рэндал Шварц, Том Кристиансен Изучаем Perl : Пер. с англ. - К.: Издательская группа BHV, 1998 - 320 c.: - ISBN 5-7315-0031-2.
Все пожелания - авторам: Алексею Машьянову , Александру Яковлеву .