WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » CGI - Simple Common Gateway Interface Class

CGI - Simple Common Gateway Interface Class


Дата публикации: 17-03-2013

Модуль CGI предназначен для упрощения создания HTML документов скриптом написанным на Perl'е. Модуль CGI подключается к вашему скрипту на perl, так же, как и другие модули:

use CGI;

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

#!/usr/bin/perl
use CGI; # Подключить модуль CGI
$q = new CGI; # Создать новый объект CGI
print $q->header

# Вызов метода header, который печатает HTTP заголовок
# это вместо print "Content-Type: text/html\n\n"

$q->start_html('Hello World')
# Печатаем начало документа (тэги <HEAD> и <BODY>),
# при этом вставляем строчку <TITLE>Hello World</TITLE>
$q->h1('Hello World')
# Печатаем заголовок первого уровня
$q->end_html;
# Печатаем конец документа (</BODY> </HTML>)

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

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

Синтаксис функций в CGI таков:

name({-atr=>value, -atr2=>value2}, 'text')

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

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, например:

start_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. Вот список функций, имена которых не совпадают с именами тэгов:

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() взращает значение любого из параметров.

Вызовем скрипт 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;)

Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Роберт Кийосаки:

"Когда люди спрашивают: «С чего мне начинать?» или «Как быстро разбогатеть?», мой ответ их часто разочаровывает. Я просто говорю им то, что когда-то говорил мне богатый папа: «Если хочешь быть богатым, нужно быть финансово грамотным»."

Опрос

Какой браузер Вы используете?

Internet Explorer
Google Chrome
Mozilla Firefox
Netscape Navigator
Maxthon Browser
Opera
Mozilla Suite
SeaMonkey
K-Meleon
Safari
Amaya
Avant Browser
SlimBrowser
Другой...