Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

Что такое CGI и PERL​


Важно понимать, что CGI – не язык программирования, а протокол передачи данных веб-серверу через stdin и их прием из stdout. В качестве обработчика команд используется любая программа с поддержкой функций потокового ввода-вывода. Например, написанная на языке Perl. Главное, что от скрипта требуется «умение» заполнять таблицы в базе данных и получать данные из них путем подачи запроса, чего никогда не сделать средствами HTML.

proxy.php?image=https%3A%2F%2Ftimeweb.com%2Fmedia%2F23c70d0799a91386123d740d485f836a.png&hash=dbe0a09d683e8ccd474c92e44d236ab2

Особенности применения языка Perl:

В качестве альтернативы Perl все чаще применяется язык программирования Python, но администраторы «старой закалки» продолжают придерживаться классики создания CGI-скриптов, так как поддержка Perl «по умолчанию» имеется в большинстве дистрибутивов Linux. Поэтому программы на нем начинают работать без предварительной подготовки сервера. Формально же скрипты можно писать на чем угодно – хоть на C/C++, Pascal, Java или Visual Basic.

Использование готовых скриптов​


Если CGI-скрипт уже готов (используется стандартный модуль), перед использованием его нужно скопировать на сервер хостинга. Выполняется процедура при помощи файлового менеджера в панели управления или через FTP-доступ, например программой FileZilla. Выбор расположения остается на усмотрение пользователя; к программе можно обращаться независимо от имени каталога или подкаталога, но рекомендуется придерживаться определенных стандартов.

Так, внутри скриптов обязательно указывается путь к интерпретатору используемой платформы для программирования:

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

Написание простейшего CGI-скрипта​


При работе в среде операционной системы Windows для написания кода понадобится специальная программа. Например, подойдет специализированный текстовый редактор Notepad++ (стандартный Блокнот для таких целей не подходит). Сам код строится вокруг переменных окружения и потоков ввода-вывода информации. По сути, CGI-скрипты являются обработчиками отдельных команд и не являются «полноценной» программой.

proxy.php?image=https%3A%2F%2Ftimeweb.com%2Fmedia%2Ff66e68403117157c5cf9fa58c4919ac7.jpg&hash=95e7b1ead12ae7974470b8496eb7e9a5

Более детально:

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



#!/bin/sh



echo Content-type: text/html



echo



echo "<h2>Today is "



date



echo "</h2>"

При помощи специального виджета, установленного в CMS, или путем ручного редактирования шаблона в нужный участок HTML вставляется код:



<a href="/cgi-bin/examples/today.cgi">

В приведенном примере решена типовая ошибка новичков. Она заключается в отсутствии метки о типе выводимого результата (строка Content-type: text/html). После нее располагается пустая строка для указания, что следом идет непосредственно программный код.

Просмотр установленных модулей PERL​


Проверить ранее подключенные PERL-модули можно командой vim. Перед ее вводом необходимо подключиться к серверу хостинга по защищенному каналу SSH. После авторизации нужно ввести в консоли:



vim modules.pl

В результате будет создан файл с указанным названием. Следующий шаг – открыть его в текстовом редакторе и изменить содержимое на следующий код:



#!/usr/bin/perl -w



use ExtUtils::Installed;





$installed = ExtUtils::Installed->new();



foreach $module ($installed->modules()){



printf "Module: %s\t\tVersion: %s\n", $module, $installed->version($module);



Выйти из файла с сохранением и запустить его на исполнение можно командой perl ./modules.pl. Процедура по поиску подключенных CGI-скриптов востребована, еслина сайте возникают ошибки 403 или 500. Первая появляется из-за некорректной настройки прав доступа (необходимо установить на файлах скриптов доступ 755), вторая же происходит из-за сбоя транслятора Perl или из-за синтаксической/логической ошибки в самом коде. В любом случае сначала нужно убедиться в том, что скрипт подключен.