Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Прямой доступ к интерфейсу CGI в Perl
В зависимости от метода данные формы передаются в CGI-программу или через стандартный ввод (POST), или через переменную среды QUERY_STRING (GET). Помимо этих данных CGI-программе доступна и другая информация, поступившая от клиента в заголовках запроса или предоставленная Web-сервером. Эта информация сохраняется в переменных среды операционных систем UNIX или Windows. В таблице перечислены переменныесреды, обычно используемые в CGI:
CGI-программа на языке Perl имеет доступ к переменным среды через автоматически создаваемый интерпретатором хэш-массив %ENV, к элементам которого можно обратиться по ключу, совпадающему с именем переменной среды. Данные формы поступают в CGI-программу в закодированном виде, поэтому в качестве первого шага обработки CGI-сценарий должен выполнить декодирование полученной информации. При пересылке данных методом GET данные формы, как видно из приведенного выше примера, присваиваются переменной среды QUERY_STRING, при передаче методом POST — передаются в программу через стандартный ввод и тоже могут быть присвоены некоторой внутренней переменной. Таким образом, декодирование данных сводится к следующей последовательности манипуляций со строкой: - замена каждой группы "%hh", состоящей из шестнадцатеричного ASCII-кода "hh" с префиксом "%", на соответствующий ASCII-символ; - замена символов "+" пробелами; - выделение отдельных пар имя=значение, разделенных ограничителем "&"; - выделение из каждой пары имя=значение имени и значения соответствующего поля формы. Вывод CGI-программы в интерфейс CGI выполняется с помощью функции print, которая направляет данные в стандартный выводной поток, причем первой должна быть выведена строка заголовка протокола HTTP (поле "Content-type"), как в следующем примере:
#!/usr/bin/perl # Создание заголовка HTTP print "Content-type:text/html\n\n"; # Созданиезаголовка Web-страницы print "<HTML><HEAD><TITLE>HelloWorld Page", "</TITLE></HEAD><BODY>"; # Создание заголовка первого уровня print "<H1>Hello, world</H1>"; # Создание окончания Web-страницы print "</BODY><HTML>";
С использованием конструкции "heredocument" ("документ здесь") предыдущий пример можно записать следующим образом:
print<<TEST_WEB_PAGE; Content-type:text/html\n\n <HTML><HEAD><TITLE>HelloWorld Page</TITLE></HEAD><BODY> <H1>Hello, world</H1> </BODY><HTML> TEST_WEB_PAGE
Использование модуля CGI в Perl Для написания CGI-программ для доступа к интерфейсу CGI можно использовать модуль CGI, входящий в состав стандартной поставки Perl. Этот модуль включается в программу с помощью оператора use:
useCGI; Стили программирования CGI-программ При создании CGI-программ с помощью модуля CGI можно использовать один из двух стилей программирования: объектно-ориентированный и стиль, ориентированный на использование функций. При использовании объектно-ориентированного стиля создаются один или несколько объектов CGI, а затем для создания элементов страницы используются объектные методы применительно к созданным объектам. Каждый объект CGI формируется со списком именованных параметров, передаваемых Web-сервером CGI-программе. Можно изменять объекты, сохранять их в файле или базе данных, а затем восстанавливать их из файла или базы данных. Например, простая Web-страница, содержащая приветствие "Hello, world" может быть создана с помощью объектно-ориентированного стиля с помощью следующей последовательности операторов:
#!/usr/bin/perl -w UseCGI; # Загрузка модуля CGI $q = newCGI; # Создание нового объекта CGI print $q->header, # Создание заголовка HTTP # Создание заголовка Web-страницы $q->start_html('HelloWorldPage'), # Создание заголовка первого уровня $q->h1('Hello, world'), $q->end_html; # Создание окончания Web-страницы
При использовании стиля, ориентированного на функции, для получения данных из форм, формирования Web-страницы и других действий вызываются функции модуля CGI. Так, та же страница, созданная с помощью стиля, ориентированного на функции, выглядит следующим образом:
#!/usr/bin/perl # Загрузка стандартных функций CGI Use CGI qw/:standard/; printheader, # СозданиезаголовкаHTTP # СозданиезаголовкаWeb-страницы Start_html('HelloWorldPage'), # Создание заголовка первого уровня H1('Hello, world'), |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 400. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |