CGI (Common Gateway Interface) – общий шлюзовой интерфейс
Один из способов формирования динамических html-документов (документов, создаваемых программно на серверной стороне «на лету») заключается в использовании CGI-скриптов.
CGI — это интерфейс, используемый для связи внешней программы, работающей на серверной стороне, с web-сервером.
Интерфейс CGI разработан таким образом, что для написания серверного CGI-скрипта можно использовать любой язык программирования, имеющий средства для работы со стандартными устройствами ввода/вывода.
CGI-скрипт, как правило, помещается в каталог cgi (или cgi-bin) web-сервера, но это требование необязательно, так как CGI-скрипт может располагаться в любом каталоге, но при этом большинство web-серверов требуют дополнительной настройки.
CGI-скрипт, использующий CGI-интерфейс, получает информацию от клиента, обрабатывает ее, и возвращает результат (динамически сформированный html-документ, гиперссылку на существующий html-документ, графическое изображение и т.д.) Так как CGI-скрипт — это программа, она должна быть оттранслирована для той операционной системы, под управлением которой работает web-сервер.
На стороне клиента отображается форма, размеченная тегом <form>, содержащая некоторые поля для ввода данных и кнопку для отсылки данных. После заполнения полей и нажатия кнопки данные в запросе клиента пересылаются на сторону сервера, где web-сервер передает присланные данные CGI-скрипту, используя CGI.
После обработки полученных данных CGI-скрипт создает документ и передает его web-серверу, который в ответе сервера возвращает документ на сторону клиента.
Передача информации от клиента к серверу и передача сформированного документа от сервера к клиенту изображена на рисунке.
1 — клиент формирует запрос, включая в него данные, внесенные в поля формы, запрос отсылается web-серверу.
2 — web-сервер, используя CGI, передает присланные в запросе данные CGI-скрипту.
3 — CGI-скрипт на основе данных формирует документ, возвращает его web-серверу, который, в свою очередь, формирует ответ сервера, включая в него документ, созданный CGI-скриптом, и возвращает ответ клиенту.
Для создания формы используется тег <form>.
<form action=URL method=GET | POST>
…
</form>
Атрибут action определяет url GCI-скрипта, обрабатывающего присланные данные.
Атрибут method определяет метод передачи данных. По умолчанию используется метод get.
Метод GET
Метод GET предполагает передачу данных GCI-скрипту через переменные среды (environment variables), устанавливаемые на стороне сервера.
Для передачи данных, присланных методом GET, используется переменная QUERY_STRING. Значением переменной QUERY_STRING будет строка, содержащая данные в формате name1=value1&name2=value2& … &nameN=valueN, где name — это имя поля формы, value — значение, определенное пользователем для поля формы.
Метод POST
При использовании метода POST GCI-скрипт получает присланные данные через стандартный поток ввода.
Объем переданных данных (в байтах) можно получить через переменную окружения CONTENT_LENGTH.