|
Программирование >> Программный интерфейс приложений
Ни в коем случае не активизируйте директивы 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<=y, right x%3C%3Dy%2C%20right%3F Создание многоцелевых Web-страниц Одной из главных причин, для чего нужно создавать сценарии, генерирующие HTML-страницы, а не статические HTML-документы, является то, что сценарий должен иметь возможность создавать разноцелевые страницы в зависимости от способа их вызова. Все создаваемые нами CGI-сценарии имеют это свойство. Все они работают по такому алгоритму. 1. При первом запросе сценария из броузера он генерирует начальную страницу, позволяющую сделать выбор: информация какого рода вам требуется. 2. После того как этот выбор сделан, сценарий будет вызван повторно, но на этот раз он будет выбирать и отображать вторую страницу, содержащую конкретную информацию, которую вы выбрали на предыдущем этапе.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |