Программирование >>  Программный интерфейс приложений 

1 ... 122 123 124 [ 125 ] 126 127 128 ... 264


Ни в коем случае не активизируйте директивы mod perl, PerlSendHeader или PerlSetupEnv для каталога cgi-perl. Это делается автоматически модулем CGl.pm, и их принудительная активизация может привести к нежелательным конфликтам.

URL для запуска сценария mod perl аналогичен стандартному CG1-сценарию. Единственным различием является то, что вместо cgi-bin необходимо указать cgi-perl:

http: your.host.пате/cgi-perl/script name

Более детальную информацию можно получить на Web-узле сервера Apache по адресу:

http: perl.apache.org/

Краткое знакомство с модулем CGl.pm

в начале сценария Perl, работающего с модулем CGl.pm, размещается строка use, после чего создается объект CGI, дающий доступ к методам и переменным CGl.pm:

use CGI;

my {$cgi) = new CGI;

Нащи сценарии CGI используют возможности CGl.pm, вызывая методы через переменную $cgi. Например, для генерации заголовка 1-го уровня вызывается метод Ы ():

print $cgi->hl ( Мой заголовок );

Модуль CGl.pm также поддерживает стиль использования, который позволяет вызывать методы как функции, без предществующего суффикса $cgi-> . Этот синтаксис здесь не используется, так как нотация вида $cgi-> более привычна для работы с интерфейсом DBI и потому, что эта форма позволяет избегать конфликта между именами функций модуля CGl.pm и любыми другими функциями, которые будут созданы вами в процессе разработки сценария.

Проверка введенных параметров и вывод результатов

Одна из важных функций, которые выполняет модуль CGl.pm, - выполнение рутинной работы по накоплению информации, которую поставляет Web-сервер сценарию. Для этого нужно только запустить метод paramO. Получить имена имеющихся параметров можно с помощью выражения:

ту (@param) = $cgi->param О;

Для получения значения конкретного параметра укажите его имя следующим образом:



f (!$cgi->param ( my param ))

print my param не установлен\п ;

printf (значение my param: %s\n , $cgi->param ( my param );

Модуль CGI.pm также предоставляет в ваше распоряжение выводимую информацию, которая будет отослана на броузер клиента. Рассмотрим следующий документ в формате HTML:

<HTML> <HEAD>

<Т1ТЬЕ>Заголовок моей страницы </TITLE>

</HEAD>

<BODY>

<Н1>Заголовок Мой уровень -1 </Н1>

<р>1-ый Абзац.

<Р>2-ой Абзац.

</BODY>

</HTML>

Вот код, использующий $cgi для того, чтобы создать аналогичный документ:

print $cgi->header () ;

print Scgi->start html (-title => Титул моей страницы );

print $cgi->hl ( Заголовок моей страницы);

print $cgi->p О;

print 1-ый Абзац.\n ;

print $cgi->p О;

print 2-ой Абзац.\n ;

print $cgi->end html ();

Преимуществом использования модуля CGI.pm является возможность создания довольно специфических форм ввода/вывода данных, не вдаваясь в подробности написания кода в формате HTML. Это позволяет программисту мыслить в логических единицах, а не отдельных тэгах и уменьшает вероятность ошибок в результирующем коде HTML. (Причина, по которой я сказал вероятность заключается в том, что, например, CGI.pm не сможет предотвратить вас от совершения таких глупых ошибок, как включение списка внутрь заголовка.) Кроме того, при написании текста, не использующего тэги, модуль CGI.pm обеспечивает автоматическое исключение таких символов, как < и > , которые являются специальными символами формата HTML.

Но возможности автоматического генерирования CGI.pm никак не исключают свободу выбора. И, при желании, можно писать HTML-код собственноручно. Более того, эти два подхода можно применять одновременно, объединяя вызовы методов CGI.pm с написанием литеральных тэгов вручную.



Управляющие последовательности HTML и текст URL

При написании текста, не использующего тэгов, с помощью таких методов CGl.pm, как start html{) или hi (), специальные символы проставляются в тексте автоматически. Например, при генерации титула с помощью следующего оператора символ & в тексте титула будет автоматически преобразован в &атр; :

print $cgi->start html {-title => А, В & С );

При написании текста, не использующего тэги, не прибегая к помощи методов CGl.pm, его сначала необходимо пропустить через метод escapeHTML () для ТОГО, чтобы убедиться в том, что при создании URL, которые могут содержать специальные символы, все управляющие последовательности проставляются правильно. Хотя в этом случае вместо этого можно воспользоваться методом escape {). Здесь очень важно применить правильный метод кодировки потому, что каждый метод применяет различные методы кодировки и кодирует специальные символы в совершенно различных форматах. Рассмотрим следующий короткий сценарий Perl:

#! /usr/bin/perl

use CGI;

$cgi = new CGI;

$s = x<=y, right? ;

print $cgi->escapeHTML {$s) . \n ; #код HTML-текста print $cgi->escape ($s) . \n ; #код URL

При запуске этого сценария можно увидеть, что сценарий выводит результат, из которого видно, что кодирование текста в формате HTML совсем не одно и то же, что кодирование для URL.

x&lt;=y, right x%3C%3Dy%2C%20right%3F

Создание многоцелевых Web-страниц

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

1. При первом запросе сценария из броузера он генерирует начальную страницу, позволяющую сделать выбор: информация какого рода вам требуется.

2. После того как этот выбор сделан, сценарий будет вызван повторно, но на этот раз он будет выбирать и отображать вторую страницу, содержащую конкретную информацию, которую вы выбрали на предыдущем этапе.



1 ... 122 123 124 [ 125 ] 126 127 128 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика