Perl. CGI-программирование с использованием CGI.pm




Интерпретатор Perl содержит стандартный модуль CGI.pm. Пакет CGI.pm поддерживает как простой функционально-ориентированный интерфейс, так и объектно-ориентированный интерфейс.

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

Начало HTML-документа. Вначале надо создать CGI объект, затем с помощью метода header этого объекта — HTTP-заголовок. Заголовок можно сформировать и самостоятельно, например, командой print. Метод start_html начинает сам документ HTML. Этот метод создает секцию <HEAD>,а также позволяет указать некоторые атрибуты <BODY>, как-то: цвет для изображения фона и ссылок. Чтобы результаты работы методов header и start_html попали на страницу, необходимо использовать функцию print:

#! /usr/local/bin/perl

$со = new CGI, print $co->header(-charset=>'windows-1251', -lang=>'ru'),

$co->start_html (-title => 'CGI Example', -author => 'Andrew',

-meta => {'keywords'=>'CGI Perl'}, -BGCOLOR => 'white', -LINK => 'red')

Создаем заголовки HTML. После создания шапки CGI-методы типа h1, h2, h3 и др. помогут создать заголовки, соответствующие тегам <Н1>, <Н2>, <НЗ> и т. д.

print $co->h1('Here is the Survey!,'),

$co->h2('Please fill out survey...')

Центрируем элементы. Чтобы центрировать текст с помощью тегов <CENTER>, используется CGI-метод center.

print $co->center($co->h1('Here is the Survey!')),

Создаем маркированный список. CGI-методы ul и li создают несортированный маркированный список (теги <UL> и <LI> соответственно).

print $co->p, $co->ul($co->li('Fame'), $co->li('Fortune '), $co->li('Fun'),)

Создаем гиперссылку. Гиперссылки помещаются на страницу CGI-методом а:

print "Гиперсыылка: ", $co->a({href=>"https://www. cpan.org/"}, "CPAN"), ". "

Создаем горизонтальную полосу. Для создания горизонтальной линии (метка <HR>) используется CGI-метод hr: print $co->hr

Создаем HTML-форму. Элементы управления HTML группируются в формы. Для создания формы используется GGI-метод startform. После нажатия кнопки Submit данные из элементов управления должны быть прочитаны и переданы сценарию, формирующему сводку данных. URL этого сценария указывается в атрибуте action формы:

print $co->startform(-method=>'POST', -action=>'https://www.yourself.com/user/cgi/cgi2.pl')

Все последующие элементы управления будут включены в форму, потому что метод startform генерирует тег <FORM>.

Если startform вызывается без аргументов, кнопка Submit возвращает введенные данные той же форме.

Работаем с текстовыми полями. Для создания текстового поля, позволяющего вводить текст, используется CGI-метод textfleld: "Please enter your name: ", $co->textfield('text')

Работаем с текстовыми областями. Текстовая область может содержать несколько строк текста. В cgil.pl создается текстовая область textarea:

print $co-> textarea (

-name => 'textarea', -default => 'No opinion', -rows => 10, -columns => 60)

Работаем с кнопками с независимой фиксацией. Кнопки с независимой фиксацией (check­buttons) обычно объединяются в группу, что позволяет возвращать имена выбранных эле­ментов управления в одном списке. С помощью CGI-метода checkbox_group создается такая группа.

print $co->checkbox_group(

-name => 'checkboxes', #имя

-values => ['Shampoo', 'Toothpaste', 'Bread', 'Cruise missiles'], #подписи

-defaults => ['Bread', 'Cruise missiles']) #пункты по умолчанию

Работаем со списками. Список с готовыми значениями можно прокрутить в случае, когда невозможно одновременно вывести па экран все его строки. Этот элемент управления созда­ется CGI-методом scrolling_list.

print $co->scrolling_list('list', #имя

['Highest', 'High', 'Medium', 'Low'], 'High',)#строки, по умолчанию выбрано ‘High’


Работаем с кнопками с зависимой фиксацией. Кнопки с зависимой фиксацией (radiobuttons) позволяют сделать однозначный выбор из нескольких значений.

$labels{'1'} = 'Sunday'; $labels{'2'} = 'Monday'; $labels{'3'} = 'Tuesday';

$labels{'4'} = 'Wednesday'; $labels{'5' } = 'Thursday', $labels{'6'} = 'Friday';

$labels{'7'} = 'Saturday';

print $co->radio_group (

-name->' radios', # объединяются в группу 'radios'

-values=>['1', '2', '3', '4', '5', '6', '7'], # получают значения от '1' до '7'

-default=>'1',

-labels=>\%labels) # метки прикрепляются к ним с помощью хэша %labels

Работаем с раскрывающимся списком. В HTML раскрывающийся список представляет собой набор элементов, который пользователь может открыть нажатием кнопки, обычно сопровождающийся изображением стрелки вниз. Пользователь может выбрать элемент списка, а вы - определить, на чем он остановился. Элементы задаются при помощи метода popup_menu:

print $co->popup_menu (

-name => 'popupmenu',

-values => ['Very much', 'A lot','Not so much', 'None'])

Работаем со скрытыми полями данных. Данные, хранящиеся в скрытом поле на Web-странице, невидимы для пользователя. (Это удобно, когда сценарий ожидает получить некоторые неизменные сведения о странице.) Такие поля создаются следующим образом:

print $co->hidden(-name=>'hiddendata', -default=>'Rosebud'),

Создаем кнопки отмены и подтверждения. Чтобы отправить на сервер данные формы, пользователь должен нажать кнопку Submit. Она создается CGI-методом submit. Аналогично, кнопка Reset, которая очищает данные формы, создается методом reset.

print $co->center(

$co-> submit(-value=>'Отправить'),

$co->reset(-value=>'Отмена'))

Закрываем HTML-форму. Все элементы управления, описанные ранее, являются частью одной формы анкеты, созданной в cgil.pl. Для открытия формы использовался метод startform, а для ее закрытия — endform: print $co->endform,

Закрываем HTML-документ. Чтобы завершить работу с HTML-документом, используйте метод end_html, который выводит теги </BODY></HTML>. Вот как заканчивается страница с анкетой в сценарии cgil.pl: print $co->end_html;

Чтение данных из элементов управления HTML. Когда пользователь нажмет на кнопку Submit, броузер отправит данные формы сценарию cgi2.pl; CGI-метод param в нем как раз и предназначен для чтения данных. Достаточно передать имя, присвоенное текстовому полю, а вывод выполняется следующим образом:

print "Your name is: ", $co->em($co->param('text')), ".";

Метод em создает метку <ЕМ>, которая большинством броузеров воспринимается как указание на переход к курсивному начертанию.

Аналогично читаются данные из эл-тов управления: textarea, list, radios, popupmenu, hiddendata

Кнопки с независимой фиксацией: в данном случае param возвращает список имен помеченных кнопок, функция join, объединяет элементы списка в строку:

print "You use these products: ", $co->em(join(", ", $co->param('checkboxes'))), “.”;

 

Функционально-ориентированное CGI-программирование.

 

#!/usr/local/bin/perl

use CGI qw/:standard/;

print header(-charset=>'windows-1251', -lang=>'ru'),

start_html(' CGI Functions Example'),h1('CGI Functions Example'),

start_form, "Please enter your name: ", textfield('text'), p,

submit(-value=>'Отправить'), reset(-value=>'Отмена'), end_form,hr;

if(param()) {print "Your name is: ",em(param('text')), hr;}

print end_html;

Код генерирует текстовое поле с предложением ввести имя пользователя. После нажатия на кнопку Submit данные возвращаются к тому же CGI-сценарию, который с помощью функции рагаm выводит введенное имя в нижней части Web-страницы

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: