|
|
|
Главная страница » PERL » Циклы и ветвления.
СОЗДАНИЕ СКРИПТОВ CGI С ПОМОЩЬЮ PERL.
В главе 12 вы познакомились с программированием на языке
Perl. В это главе вы научитесь использовать Perl для создания
скриптов CGI. Коротко говоря, вы получите возможность сочетать
ваши знания по языку Perl и CGI, полученные в предыдущих главах.
Кроме того, вы узнаете несколько новых приёмов программирования
на языке Perl.
Как вы уже знаете, можно создать скрипты CGI, используя
практически любой язык программирования. Чтобы быть грамотным
Web-программистом, вы должны не только знать, как писать програм-
мы для WEB, но также необходимо иметь представление о том, какие
средства использовать для решения специфических задач. За счёт
правильного выбора языка программирования и программных средств в
соответствии с вашей задачей, вы можете значительно повысить эф-
фективность работы и сэкономив много сил и времени. Когда вы ис-
пользуете язык Perl для создания скриптов, можно создать устойчи-
вые профессиональные скрипты за относительно короткий промежуток
времени. Остаток этой главы посвящен изучению программирования
CGI-скриптов на языке Perl. К моменту окончания изучения этой
главы вы поймете следующие концепции:
? Perl представляет собой эффективное средство для создания на-
дежных скриптов без написания кодов большого объёма, что выгодно
отличает его от других языков программирования, таких как C и С++.
? Версия 5 языка Perl добавляет много новых возможностей, таких
как поддержка объектно-ориентированных скриптов и усовершенство-
вание техники определения области видимости переменных.
Почему разработчики используют Perl для создания CGI- скрип-
тов?
Предыдущие две главы должны были составить у вас представле-
ние о том, что такое CGI и почему мощные возможности языка Perl
по обработке текстов делают его хорошо приспособленным для разра-
ботки CGI-скриптов. Другие причины и пользования разработчиками
языка Perl для написания CGI-скриптов заключаются в том, что Perl
обеспечивает широкую поддержку взаимодействия с базами данных,
обладает переносимостью и обеспечивает безопасность при работе в
сетях. Как уже говорилось, Perl представляет собой один из наибо-
лее мощных языке программирования для обработки текстов. Скрипты
CGI обычно имеют дело с интенсивной обработкой текста: анализом
данных, обеспечением доступа к база данных, генерацией HTML-стра-
ниц и т. д.
Типичный CGI-скрипт, написанный на языке Perl, по своему
размеру представляет собой фрагмент программы аналогичного назна-
чения, написанной на C++. Как вы увидите дальше в этой главе,
Perl обеспечивает поддержку взаимодействия с базами данных. По
существу, Perl имеет встроенный менеджер баз данных Perl был пе-
ренесен почти что на все популярные вычислительные платформы та-
кие как Windows, UNIX, MS, DOS. To обстоятельство, что Perl яв-
ляется 6ecплатным, также увеличивает его привлекательность. Пос-
кольку Perl не использует указателей, то он является более безо-
пасным и надежным языком, чем С и C++. За счет исключения ис-
пользования указателей предовращается нарушение доступа к памяти
и связанные с этим ошибки. Кроме того используя регулярные выра-
жения языка Perl, легко проверить целостность входных данных и
отфильтровать всякие escape-последовательности, которые МОГУТ уг-
рожать безопасности вашей системы. Наконец, для повышения безо-
пасности имеется специальная версия Perl, называемая taintperl,
предотвращающая использование каких-либо входных данных в качес-
тве системных команд. Дополнительную и информацию о taintperl
можно найти на Web-узлах, указанных в конце этой главы.
ВЫЗОВ CGI-СКРИПТА
На UNIX-системах программисты могут исполнять скрипты, напи-
санные на языке Perl, как выполнимые файлы. Иными словами, для
них нет необходимости делать что-то специальное для вызова скрип-
та. На системах, основанных на DOS или Windows, некоторые серве-
ры не исполняют скрипты Perl автоматически. В этом случае вам
придется писать пакетный файл, который вызывает команды Perl для
запуска скрипта. Для некоторых систем придется подробнее познако-
миться (. документацией по вашему НТTР-серверу относительно за-
пуска скриптов Perl. Большинство серверов HTTP предполагает, что
скрипты CGI находятся в каталоге под названием cgi-bin. В этом
случае можно вызвать скрипт с помощью URL, подобно следующему:
http://your-domain/cgi-bin/your-script
Примечание: В URL задан каталог cgi-bin, но в действительности
скрипт может находиться где угодно в системе. Вы должны опреде-
лить его расположение при установке сервера HTTP.
ВЫЗОВ СGI-СКРИПТА В СИСТЕМЕ UNIX
Если вы поместили ваш скрипт в каталог cgi-bin и сделали его
выполнимым, то пользователь может вызвать скрипт, непосредствен-
но используя URL. Однако необходимо выполнить несколько шагов. В
первую очередь, в начало скрипта необходимо поместить строку, ко-
торая идентифицирует файл как программу на языке Perl:
#!/usr/bin/perl
Примечание: Вы должны будете указать в этой строке путь, завися-
щий от того, где установлен Perl на вашей системе.
Далее необходимо сделать скрипт выполнимым, используя команду
chmod:
chmod +x your-srcipt
ВЫЗОВ СКРИПТА НА ЯЗЫКЕ PERL ИЗ DOS И WINDOWS
В DOS или Windows скрипты Perl сами по себе не являются вы-
полнимыми самостоятельными программами. Вместо этого необходимо
запустить исполнимую программу PERL.EXE, включая имя скрипта на
языке Perl в командной строке. Для упрощения этого процесса мож-
но создать ВАТ-файл для каждого вашего скрипта, который запус-
кает PERL. ЕХЕ с соответствующим файлом, содержащим скрипт. Нап-
ример, предположим, что ваш ВАТ-файл HELLO.ВАТ содержит следую-
щие команды:
@echo off
perl Hello.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
Также предположим, что скрипт Perl Hello.PL содержит следую-
щие инструкции:
print "Hello, args are '@ARGV'\n";
Как можно видеть, ВАТ-файл просто запускает программу
PERL.EXE с указанием скрипта Hello.PL в качестве входной коман-
дной строки. Если вы запустите скрипт на языке Perl из Web-серве-
ра, то обнаружите, что большинство HTTP-серверов распознают
скрипты на языке Perl (например, как это делает FolkWeb- сервер),
так что нет необходимости в использовании ВАТ-файла. Иными слова-
ми, если вы используете HTTP-сервер наподобие FolkWeb, вам нет
надобности делать что-то специальное для вызова CGI-скрипта на
языке Perl. В противном случае может потребоваться создать
ВАТ-файл.
Если ваша программа-сервер нуждается в ВАТ-файле для выпол-
нения скрипта на языке Perl, вы должны поместить ВАТ-файл (такой
как HELLO.ВАТ) в каталог cgi-bin и туда же - скрипт Perl
(Hello.PL).
СОЗДАНИЕ ТЕКСТА И HTML-ДОКУМЕНТА С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА PERL
Создание текстовых документов с использованием языка Perl
представляет собой тривиальную задачу. Вам только необходимо
удостовериться, что вы поместили правильный НТМL заголовок в на-
чале текстового документа. Например, следующий скрипт создает
простой текстовый документ, содержащий сообщение Hello, world:
print "Content-type: text/plain\n\n";
print "Hello, world\n";
Создание текстовых документов HTML также очень легко. Напри-
мер, в следующем фрагменте текста создается простой документ HTML:
print <
"; } print " Сайт управляется системой uCoz
\n"
Этот пример создает статический заголовок, и затем выводит
значения переменных окружения скрипта, используя форматированный
HTML-документ. Скрипт показывает, как использовать конструкцию
<здесь-документ> совместно с традиционной функцией print.
ДОСТУП К СТРОКЕ ЗАПРОСОВ
В главе 11 вы видели, что простым способом передачи данных
CGI в скрипт является использование строки запросов. Броузер пе-
редает данные HTTP-серверу как часть URL. В свою очередь сервер
рассматривает все, что следует за знаком вопроса (?) в URL, как
строку запроса.
CGI-скрипт может получить доступ к строке запросов двумя
способами. Либо сервер передает строку запросов скрипту, ис-
пользуя аргументы командной строки, либо сервер присваивает зна-
чение строки запросов переменной окружения QUERY_STRING. Напри-
мер, можно возвратиться к рассмотренному выше скрипту, который
выводит на экран значения переменных окружения, и вызвать скрипт,
используя строку запросов.
ДЕКОДИРОВАНИЕ ФОРМ HTML С ИСПОЛЬЗОВАНИЕМ МЕТОДА GET.
Как вы увидели, использование подсказки ISINDEX для созда-
ния одиночного запроса достаточно просто. Но для получения от
пользователя больше чем одного значения необходимо использовать
формы. Следующий скрипт на языке Perl генерирует форму. Используя
метод GET, скрипт дает команду броузеру послать значения запроса
как часть URL, так же как при использовании ISINDEX. Разница меж-
ду использованием GET и ISINDEX состоит в том, что при использо-
вании метода GET броузер может соединить несколько величин полей
в одну строку запросов, разделяя поля с помощью амперсанда (&).
Для того чтобы скрипт мог определять значения полей, броузер
включает имена полей в строку запроса. Например, если база дан-
ных содержит три поля (имя, возраст и день рождения) с такими
значениями (Bob, 27, 11-1-68), то строка запросов будет содер-
жать значения полей в следующем формате:
\n";
@fields = split('&', $query);
forech (@field) {
Switch: {
/^check=(.*)/ && do {
$check = $1;
last Switch;
};
/^button=(.*)/ && do {
$button = $1;
last Switch;
};
/^field=(.*)/ && do {
$field = $decode(1);
last Switch;
};
}
}
print "Check Box: $check \n";
@fields = split('&', $query);
forech (@field) {
/([^=](.*)/ && do {
local ($filed, $value) = ($1, $2);
$query{$field} = &decode($value);
}
}
print "Check Box: $query{check} |
||||||||||||||||||||||||||||