Общий шлюзовой интерфейс и формы HTML
Общий шлюзовой интерфейс (Common Gateway Interface) позволяет работать с данными сервера Web в интерактивном режиме. Сервер Web через CGI запускает поисковую программу и пересылает обработанные данные назад. Сама программа CGI хранится в каталоге CGI-BIN. Это означает, что файл из каталога CGI-BIN всегда исполняемый файл. Если CGI-программа, например, взаимодействует с системой управления базой данных, то пользователь может получать некоторую интересующую его информацию в интерактивном режиме.
Это тривиально, но это факт: CGI-программы создаются посредством CGI. Код программы пишется, как правило, на языке описания сценариев Perl. Perl является интерпретируемым языком.
Передача данных от сервера к программе CGI осуществляется сервером через командную строку и переменные окружения.
Таким образом, сервер через общий шлюзовой интерфейс запускает программу CGI и пересылает ей вводимые пользователем данные. Сами данные вводятся через так называемые формы HTML. Форма представляет собой гипертекстовую страницу с одним или несколькими полями данных и специальной кнопкой для передачи введенной информации.
Как и код любого гипертекстового документа, код формы начинается с тэга FORM ACTION = /SGI-BIN/EXAMPLE. PL и заканчивается тэгом /FORM.
Аргумент ACTION — это URL программы CGI, то есть /SGI-BIN/ EXAMPLE. PL.
Метод, используемый для запроса данных. Этот параметр задает режим передачи данных из формы в программу CGI. Основные режимы передачи — GET, HEAD и POST. Программа CGI должна поддерживать один из этих режимов, иначе обработки данных не произойдет.
В режиме GET данные входят через URL в строку запроса. Например, если программа обработки данных BOB. PL лежит в каталоге CGI- BIN, то запрос HTML пойдет на сервер через ACTION следующим образом:
FORM ACTION=/CGI-BIN/BOB. PL METHOD=GET
Теперь сервер знает, где находится программа BOB. PL, поэтому он ее запустит в режиме GET.
Программы CGI получают данные от переменных окружения и посылают выходные данные через общий шлюзовой интерфейс обратно пользователю. Например, после ввода тэга A HREF=BOB. HTMLj на сервер пойдет запрос GET /BOB. HTML. Заголовок GET определяет получение документа BOB. HTML в корневом каталоге сервера.