Автор статьи:
>CGI. Common Gateway Interface Общий интерфейс Шлюзов. Эта расшифровка мало чего может сказать многим людям. На самом деле принцип CGI прост и естественен: программа на стороне сервера принимает некие данные, обрабатывает их и выдает ответ в виде Web-страницы. Это очень частое явление на сегодняшний день, и порой даже не подозреваешь, что имеешь дело не с обычной страницей, а с результатом работы CGI-скрипта. Область использования CGI широка, а цели разнообразны. Каковы возможности CGI на самом деле? Это напрямую зависит от того, какой инструмент выбран для написания скрипта. Язык, на котором пишется скрипт, должен быть гибким и в тоже время мощным, так как предстоит не только постоянная работа с файлами, но и с базой данных, ОС и Web-сервером. Самыми подходящими языками для CGI-программирования являются Си/С++ и Perl. Последний наиболее часто используется для этих целей из-за своей простоты, надежности и широте возможностей.
Си/С++. Язык Cи по праву считается универсальным, и нашел свое место в среде CGI. Его применение естественно в родной стихии UNIX, на основе которой, в большинстве случаев, и строится Web-узел. Cродни Си, для CGI-программирования используется C++, подразумевая создание и уничтожение неких объектов, которые реализуются в C++ через классы по сути пользовательские типы данных. Очень естественно создать, например класс Guestbook или DataBaseEntry, который содержал бы в себе необходимые переменные и функции. Стоит заметить, что почти все новые языки программирования: Java, JavaScript, Perl, содержат конструкции схожие с конструкциями Си или же являющиеся их точными копиями. Поэтому рекомендуется с начала изучить этот фундаментальный язык.
Perl. Этот язык уникален. Наряду с простотой в этом языке сосуществуют надежность и мощь. Во-первых, в нем отсутствуют типы данных, что благоприятно воздействует на написание CGI-скриптов. Во-вторых, очень много конструкций взято из Си. Надо отметить, что в Perl часто используются регулярные выражения, похожие на те, что применяются в сценариях UNIX Shell. Имеется удобный цикл foreach и красивые, по сути, модификаторы выражений. Perl располагает стандартной библиотекой, в которой есть функции поиска, работы с Web-сервером, графикой, и т.п. Из этого можно сделать вывод, что для программиста знакомого с UNIX не составит труда изучить Perl. Для примера, можете взглянуть на результат работы http://denfinity.virtualave.net/cgi-bin/voting.cgi?show, написанной мной на Perl, для проведения голосования на сайте. Вообще, на этом возможности только начинаются. Для написания такой программы достаточно уметь работать с файлами из Perl, и немного, с переменными окружения Web-сервера. В программе всего 156 строк, когда на языке Си понадобилось бы не менее 250 строк кода. Это подчеркивает простоту и эффективность конструкций Perl.
CGI-скрипты. Не стоит думать, что за этим названием кроется что-то особенное и отличное от простой программы. CGI-скрипт такая же программа, как и все остальные, но со своими маленькими тонкостями. Самая простая цель для написания такой программы есть желание полноценно обработать форму на Web-странице. Полноценно значит не с помощью какого-нибудь JavaScript-а. Вам наконец-то надо сохранить данные посетителя в файле или в базе данных. Для этого Вам надо разобраться с методами передачи данных: GET или POST и правильно принять данные программой, указанной в ACTION. Не забудьте напечатать строку:
"Content-Type: text/html \n\n"
в начале скрипта. Это сообщит Web-серверу, какого типа будут выведены данные, иначе он вернет ошибку с кодом 500. Убедитесь, что программа имеет права на исполнение от имени пользователя Web-сервера. Далее, примите данные из входного потока (метод POST), или из переменной окружения сервера QUERY_STRING (метод GET). Вы получите строку вида:
var1=value1&var2=value2&var3=long%20value
— согласно с именами переменных вашей формы. Помните, что пробелы (%20) и специальные символы кодируются. В завершении пример простейшей CGI-программы на С++, на http://denfinity.narod.ru/cgi.html.