Авторские статьи CGI - Simple Common Gateway Interface Class

Discussion in 'Статьи' started by Shawn1x, 25 Oct 2008.

  1. Shawn1x

    Shawn1x Banned

    Joined:
    24 Aug 2007
    Messages:
    376
    Likes Received:
    466
    Reputations:
    -18
    div.main {margin-left: 20pt; margin-right: 20pt} CGI - Simple Common Gateway Interface ClassМодуль CGI предназначен для упрощения создания HTML документов скриптом написанным на Perl'е. Модуль CGI подключается к вашему скрипту на perl, так же, как и другие модули:

    Code:
    use CGI; 
    Есть два способа использования модуля CGI: это объектно-ориентированный стиль и как набор функций. при использовании объектно-ориентированного стиля, вы создаете один или несколько объектов, а потом используете их методы для формирования HTML-страницы. Вот пример использования объектно-ориентированного стиля:


    Code:
    #!/usr/bin/perl use CGI; # Подключить модуль CGI $q = new CGI; # Создать новый объект CGI print $q->header # Вызов метода header, который печатает HTTP заголовок # это вместо print "Content-Type: text/htmlnn" $q->start_html('Hello World') # Печатаем начало документа (тэги <HEAD> и <BODY>), # при этом вставляем строчку <TITLE>Hello World</TITLE> $q->h1('Hello World') # Печатаем заголовок первого уровня $q->end_html; # Печатаем конец документа (</BODY> </HTML>) 

    Использовать CGI как набор функций, еще проще, в этом случае, вам не нужно создавать новый объект, вы просто используете функции CGI. Следующий пример демонстрирует использование CGI как набор функций, в результате его выполнения будет выдана страница аналогичная странице выдаваемой в предыдущем примере.

    Code:
    #!/usr/bin/perl use CGI qw/:standard/; # Загружаем стандартные процедуры CGI print header # Печатаем HTTP заголовок # это вместо print "Content-Type: text/htmlnn" start_html('Hello World') # Печатаем начало документа (тэги <HEAD> и <BODY>), # при этом вставляем строчку <TITLE>Hello World</TITLE>  h1('Hello World') # Печатаем заголовок первого уровня end_html; # Печатаем конец документа (</BODY> </HTML>) 
    Синтаксис функций в CGI таков:

    Code:
    name({-atr=>value, -atr2=>value2}, 'text') 
    name - это имя функции, которое как правило совпадает с именем интересующего тэга. О тэгах, имена которых не совпадают с именами соответствующих функций, речь пойдет дальше.
    atr и atr2 - это имена атрибутов данного тэга.
    value и value2 - это значения тэгов.
    text - это текст находящийся между открывающим и закрывающим тэгами.
    Любой из указанных параметров может опускаться. Рассмотрим все изложенное на примерах.

    Code:
    print h1() # Печатает <H1> print h1('Hello','world'); # Печатает <H1>Hello world</H1> print h1({-align=>left}); # Печатает <H1 ALIGN="LEFT"> print h1({-align=>left},'Hello'); # Печатает <H1 ALIGN="LEFT">Hello</H1> 
    Некоторые функции в CGI используются парами, подобно закрывающим и открывающим тэгам в HTML, например:

    Code:
    tart_html и end_html (<HTML><HTML/>) start_table и end_table (<TABLE></TABLE>) start_ul и end_ul (<UL></UL>) start_form и end_form (<FORM></FORM>) 
    Вы наверное уже успели заметить, что названия функций аналогичны названиям тэгов HTML. В этом и заключается простота в освоении CGI, достаточно знать HTML, чтобы через 30 мин. свободно использовать CGI. Вот список функций, имена которых не совпадают с именами тэгов:

    Code:
    print redirect('http://www.perl.ru/'); # Переадресовать браузер к другой странице. # Пример известной нам функции выполняющей функции сразу нескольких тэгов print start_html(-title=>'Hello World', # Заголовок документа -author=>'flp@mail.ru', # Автор -meta=>{'keywords'=>'world hello flp', # Ключевые слова 'copyright'=>'copyright 2000 Philip Koryaka'}, # Авторские права -style=>{'src'=>'/styles/style1.css'}, # Стиль для документа -BGCOLOR=>'blue'); # BGCOLOR для документа print header(-Refresh=>'10; URL=http://www.perl.ru', # Обновление документа -cookie=>$cookie, # Устанавливаем Cookie -type=>'image/gif', # Тип документа -expires=>'+3d'); # Срок годности # Следующий тэг создает список радио-кнопок (аналог <INPUT TYPE=RADIO>): print radio_group('name'=>'OS', 'values'=>['Unix','Windows','Macintosh'], 'default'=>'Unix'); # Следующий тэг создает поле ввода пароля (аналог <INPUT TYPE=PASSWORD>): password_field(-name=>'secret', -value=>'starting value', -size=>50, -maxlength=>80); # Аналогично данной функции используются функция file_field 
    Сильной стороной CGI является использование параметров, передаваемых скрипту. Функция param() взращает значение любого из параметров.
    Code:
    Вызовем скрипт script.cgi?name=bob&lang=en&opt=1&opt=4&opt=8 $a = param('name') # Переменной $a присваиваем значение параметра name ($a=bob) $a = param('lang') # Переменной $a присваиваем значение параметра lang ($a=en) @a = param('opt') # Массиву @a присваиваем значения параметра opt (@a[0]=1; @a[1]=4; @a[2]=8;) 
     
    1 person likes this.