Опубликовано в Gazeta.Ru от 09-04-1999 (Выпуск No 029)
Оригинал: http://gazeta.ru/flopovod/09-04-1999_cgi.htm


Дмитрий Турецкий, <dmitri@listsoft.com>
Что такое CGI и как с ним бороться


Начнем с того, что под термином CGI понимают две вещи: Common Gateway Interface - это интерфейс, который позволяет web-серверу запускать и выполнять программы по запросу браузера, и возвращать результат работы таких программ. Другое значение - это та самая программа, которая выполняется на сервере.

Для авторов страниц интерес представляет как раз второе (и, кстати, более часто встречающееся) значение. В этой заметке, говоря о CGI, я буду иметь в виду программу или скрипт, которая должна запуститься на сервере и что-то сказать вашему браузеру. Программа может быть написана на любом языке программирования - скажем, C++, Pascal, Visual Basic и т.п., и откомпилирована для использованя в той операционной системе, в которой работает сервер. Скрипт - это текстовый файл, в котором записаны команды какого-либо интерпретатора, установленного на сервере. Я не уверен, что подобную терминологию можно считать "официальной", но думаю, что общий смысл понятен.

И программа, и скрипт должны уметь читать данные из стандартного входа, понимать переменные окружения и отдавать результат вычислений на стандартный выход. Выбор конкретной реализации - использовать ли программу или скрипт, на каком языке писать - остается за пользователем (то есть за вами). Главное, чтобы на сервере был установлен необходимый интерпретатор (в случае скрипта) и чтобы провайдер разрешил его использовать. В общем случае скрипты используются для более простых задач, не требующих большой скорости (большой по меркам компьютера!), а программы - для более профессиональных задач. В скрипты значительно проще вносить изменения, т.к. это обычный текстовый файл.

CGI можно использовать для чего угодно - это может быть и выборка данных из базы, и счетчик посетителей, и поиск по сайту, и обработка данных, введенных посетителями странички, и разнообразная статистика, и... Есть два метода или режима работы CGI - SSI (Server Side Include) и обычный. В обычном режиме запуск CGI осуществляется пользователем - он должен щелкнуть по ссылке или нажать кнопку Submit в форме; SSI же выполняется в момент получения пользователем странички с сервера и позволяет вставить в страничку какую-то информацию, например, число посетителей либо дату. Отличие CGI от, скажем, Java-Script-а заключается в том, что CGI скрипт выполняется на сервере, а Java-Script - на компьютере пользователя.

Многие начинающие (и не только) пользователи, особенно те, кто сравнительно мало связан с Интернетом, свято уверены, что написание и использование CGI - это жутко сложная вещь, недоступная простому смертному. Я знаю довольно много программистов, которые придерживаются этой же точки зрения. Более того, еще относительно недавно я и сам так считал... На самом деле, все намного проще: если вы способны написать какой-нибудь .bat файл, то вы можете написать и CGI скрипт!

Если вы все же решитесь, то один из первых вопросов, которые встанут перед вами, будет выбор языка. Как я и говорил, можно использовать любой. Свяжитесь со своим провайдером и спросите, что у него установлено. Я, когда начал писать CGI, решил, что не помешает заодно подучить новый язык и остановился на Perl-е. Perl - он только выгдядит страшным и непонятным, а на самом деле - довольно простой, удобный и мощный. Но выбор остается за вами!

Один из лучших, как мне кажется, способов научиться писать CGI - использовать чужой опыт. Скачайте и установите какой-нибудь скриптик-другой из общедоступных архивов... Заработало? Теперь попробуйте разобрать его по косточкам и понять, как что работает... Поменяйте внешний вид, алгоритм вычислений, добавьте какую-нибудь функцию... Получается? Теперь готовьтесь к тому, что скоро вы начнете получать от посетителей своей странички письма с просьбами прислать ваш скриптик или объяснить, почему не работает их собственный...

Пишите нам: info@gazeta.ru
Copyright © Gazeta.Ru
RRU_Network
При перепечатке и цитировании ссылка на источник с указанием автора обязательна. Перепечатка без ссылки и упоминания имени автора является нарушением российского и международного законодательства, а также большим свинством.