Cgi на perl

Програмування на PERL

На даний момент PERL є одним з найкращих мов CGI-програмування для Web-серверів на базі Unix. Для інших платформ ця мова теж годиться.

Будь-CGI-скрипт повинен формувати заголовок відповіді. Як це робиться на PERL? Дуже просто

Тепер кілька зауважень щодо розміщення скриптів на сервері.
Звичайно скрипти розміщуються в директорії cgi-bin. Хоча це не завжди так. Ваш скрипт повинен мати права на запуск в системі (це про Unix). Робиться це командою chmod + x script.cgi.

А тепер можна і починати писати скрипт, і почати слід з привітання світу.

Отже, найпростіший скрипт:

#! / Usr / bin / perl
print "Content-Type: text / html";
print "";

Перший рядок вказує шлях до інтерпертатору PERL в системі (тут вказано шлях, де зазвичай знаходиться PERL в системі Unix.
Другий рядок виводить заголовок.
А ось третій рядок передає браузеру дані, які браузер обробляє відповідно до типу, переданому в заголовку.

- ХА. - скаже вельмишановний відвідувач - А чи не простіше просто набрати HTML файл без всяких там скриптів?

Простіше! Але якщо Вам необхідно щоб сторінка була динамічною, залежною від дій користувача то на жаль :)))) скрипт писати доведеться.
Для цього необхідно обробити параметри приходять від користувача.

Параметри в CGI-скрипт передаються за допомогою змінних оточення.

Для дослідження змінних оточення напишемо невеликий скрипт

#! / Usr / bin / perl
print "Content-Type: text / html";
print "Environment ";
print " ";
print "Your request is: $ ENV

";
print "Variables:
";
print "REQUEST_METHOD= $ ENV
";
print "QUERY_STRING= $ ENV
";
print "CONTENT_LENGTH= $ ENV
";
print "CONTENT_TYPE= $ ENV
";
print "GATEWAY_INTERFACE= $ ENV
";
print "REMOTE_ADDR= $ ENV
";
print "REMOTE_HOST= $ ENV
";
print "SCRIPT_NAME= $ ENV
";
print "SCRIPT_FILENAME= $ ENV
";
print "SERVER_NAME= $ ENV
";
print "SERVER_PORT= $ ENV
";
print "SERVER_PROTOCOL= $ ENV
";
print "SERVER_SOFTWARE= $ ENV
";
print "HTTP_ACCEPT= $ ENV
";
print "HTTP_USER_AGENT= $ ENV
";
print " ";

При запуску цей скрипт видасть Вам значення змінних оточення.
Можете набрати цей скрипт і поекспериментувати з запитами, подивіться що вийде, можете подивитися тут

if ($ ENV eq 'GET') # Перевіряємо, якщо метод запиту GET
;> # То в $ query записуємо рядок запиту
# (Ту, що знаходиться після знака "?" В запиті)
elsif ($ ENV eq 'POST') # якщо метод запиту POST
);> # То записуємо в $ query
# Дані з заголовка запиту

@pairs = split (//, $ query); # розбиваємо запит на пари ключ = значення
foreach $ pair (@pairs) ($ name, $ value) = split (/ = /, $ pair); # Ключ в змінній $ name, значення
# В змінній $ value
$ Value =

tr / + / /; # Замінюємо плюси на прогалини
$ Value =

s /% ([a-fA-F0-9] [a-fA-F0-9]) / pack ( "C", hex ()) / eg; # Замінюємо нестандартні
# Символи на кодовані значення типу C00
$ Value =

Після включення цього коду в Ваші скрипти Вам залишається тільки використовувати хеш $ input вказуючи в фігурних дужках ім'я параметра. Наприклад значення $ input дорівнюватиме "1", $ input дорівнюватиме "val" ітд.

Використання модуля CGI, як уже раніше говорилося краще, зручніше і безпечніше.

Доступ до параметрів запиту забезпечує функція param. Без параметрів ця функція повертає масив значень, що містять імена ключів параметра. Для отримання значення по ключу, в param потрібно передати ім'я ключа в якості аргументу.

Наступний приклад виводить отриманий запит в форматі Ключ: Значення

#! / Usr / bin / perl
use CGI qw /: standard /; # Підключаємо стандартний набір модуля CGI
print header; # Виводимо заголовок
# (Замість print "Content-Type: text / html";)
print start_html ( 'Приклад'); # Виводимо заголовок html-документа
foreach $ key (param) <# пробегаемся по всем параметрам запроса
# Поміщаючи ключі значень в змінну $ key
print "$ key: "; # Виводимо ім'я ключа
$ Value = param ($ key); # Зчитуємо значення ключа
print $ value, "
"# І виводимо його на екран
>
print end_html;

Виходить, що ви передали в скрипт рядок запиту a = 1b = 2. скрипт її обробив і видав вище показаний результат.

Схожі статті