Лістинг 5.11. lib2.pl

#!/usr/local/bin/perl

#require 'cgi-lib.pl';

use CGI qw/:ReadParse, PrintHeader, HtmlTop, HtmlBot, SplitParam/;

print &PrintHeader;

print &HtmlTop ("CGI Example Using cgi-lib.pl");

print "<BODY BGCOLOR=\white\ LINK=\ red\><p>

<CENTER><H1>Thank you for filling out our survey.</H1></CENTER>

<H3>Here are your responses...</H3>";

if (&ReadParse(*in)) {print "Your name is: <EM>" $in{'text'}

"</EM>.", "<p>","Your opinions are. <EM>" $in{'textarea'},

"</EM>.","<p>", "You use these products. <EM>"

join(", ", &SplitParam($in{'checkboxes'})), "</EM>.<p>",

"Your income level is: <EM>",$in{'list'}

"</EM>.<p>Today is day <EM>" $in{'radios'},

"</EM> of the week.<p>","How much uncolicited mail you like<EM>"

$in{'popupmenu'}, "</EM>.", "<p>"

"The hidden data is <EM>" $in{'hiddendata'}, "</EM>."; }

print &HtmlBot;

Які підпрограми входять до складу cgi-lib.pl? Ось їх список:

CgiDie — як і CgiError, друкує повідомлення про помилку і, крім того, зупиняє програму.

CgiError — друкує повідомлення про помилку, використовуючи стандартні заголовки і HTML-код.

HtmlBot — повертає строку"</BODY>\n</HTML>\n".

HtmlTop — повертає розділ <HEAD> документа HTML і відкриває розділ <BODY>. Необов'язковий строковий параметр використовується як назва Web-сторінки: додається тег HTML <H1> з цією назвою.

MethGet — повертає значення істина, якщо поточний виклик CGI зроблений за допомогою методу GET. Інакше повертається значення брехня.

MethPost — повертає значення істина, якщо поточний виклик CGI зроблений за допомогою методу POST. Інакше повертається значення брехня.

MyBaseUrl — повертає базову адресу (base URL) CGI-сценария, без додаткової шляху або рядків запиту.

MyFullUrl — повертає базову адресу (base URL) CGI-сценария, включаючи додаткову дорогу і рядки запиту.

PrintEnv — форматує і друкує змінні середовища, доступні сценарію.

PrintHeader — повертає рядок "Content-type: text/html\n\n". З неї повинні починатися всі Web-сторінки, створювані cgi-lib.pl.

PrintVariables — форматує і друкує значення даних. Їй передається хэш або запис таблиці символів (для виведення елементів відповідного масиву). Без аргументів PrintVariables виводить вміст хэша %in.

ReadParse — основна підпрограма бібліотеки cgi-lib.pl. Вона читає і розбирає дані, передані CGI-сценарию методами GET або POST. Зазвичай вона використовується для створення хэша %in: їй передається запис таблиці символів *in. Хеш містить дані, передані сценарію, впорядковані по іменах відповідних елементів управління. Необязатель­ниє другий, третій і четвертий параметри вказують на те, що треба заповнити відповідні хэши даними з прийнятих файлів.

SplitParam — розбиває параметр, що містить декілька значень, на список з одиничних параметрів. Ця підпрограма призначена для роботи з елементами HTML, здатними зберігати декілька значень, — наприклад, групою кнопок.

Починаємо документ HTML. Перш за все, необхідно підключити пакет cgi-lib.pl. HTTP-заголовок ("Content-type: text/html\n\n") зазвичай генерується функцією PrintHeader. Секції <HEAD> і <BODY> створює підпрограма HtmlTop. Її необов'язковий строковий аргумент використовується як назва Web-сторінки і вставляється в початок сторінки як заголовок першого рівня. Приклад (lib1.pl):

#!/usr/local/bin/perl

require 'cgi-lib.pl';

print &PrintHeader;

print &HtmlTop ("CGI Example Using cgi-lib.pl");

Якщо для тега <BODY> потрібно задати додаткові атрибути, їх виводять уручну:

print "<BODY BGCOLOR=\ white\ LINK=\ red\><p>";

Підказка. Звичайно ж, можна пропустити HtmlTop і створити власні <HEAD> і <BODY>, виводячи теги HTML зі всіма необхідними атрибутами.

Файл cgi-lib.pl не має спеціальних підпрограм для створення розмітки HTML, тому майже все, що потрібний, доводиться виводити уручну.

Читаємо дані з елементів управління HTML.Для читання даних з різних елементів управління в cgi-lib.pl призначена підпрограма ReadParse. Зазвичай створюється хэш %in, з даними, отриманими від елементів управління. Він адресується по іменах елементів. Наприклад, в лістингу 6-8 ми задавали текстове поле з ім'ям text. От як створюється хэш %in і виводяться дані, отримані від елементу управління:

require 'cgi-lib.pl';

if (&ReadParse(*in)) {print "Your name is: ", $in{'text'}, "<p>";}

Зверніть увагу: значення ReadParse перевіряється до звернення до хэшу %in. Якщо ReadParse повертає значення брехня, значить, отримати дані не удалося.

Працюємо з текстовими областями.Вміст текстової області виводиться так:

if (&ReadParse(*in)) {print "Your opinions are: ",

$in{'textarea'};};

Працюємо з кнопками з незалежною фіксацією.Коли дані групи кнопок будуть передані сценарію lib2.pl, $in('checkboxes') поверне рядок з декількома значеннями. Підпрограма SplitParam пакету cgi-lib.pl робить з цього рядка список:

if (&ReadParse(*in)) { print 'You use these products: ",

join(", ", &SplitParam($in{'checkboxes'}));}

Працюємо із списками.От як lib2.pl читає і виводить на екран дані, вибрані користувачем із списку:

if (&ReadParse(*in)) {print "Your income level is: ",$in{'list'};}

Працюємо з кнопками із залежною фіксацією.Сценарій lib2.pl перевіряє, яка кнопка була вибрана, і виводить її значення:

if (&ReadParse(*in)) {print "Today is day" $in{'radios'};}

Працюємо із списками, що розкриваються.Сценарій lib2.pl перевіряє вибір користувача і виводить його на екран:

if (&ReadParse(*in)) {print 'How much unsolicited mail you like:",

$in{ 'popupmenu'}, "<p>";}

Працюємо з прихованими полями даних.Ось частина коду lib2.pl, що читає текст з прихованого елементу управління і виводить його на екран:

if (&ReadParse(*in)) {print "The hidden data is ",

$in{'hiddendata'};}

Завершуємо документ HTML.Підпрограма HtmlBot пакету cgi-lib.pl закриває Web-сторінку. Вона повертає рядок "</BODY>\n</HTML>\n":

print &HtmlBot;

Часто цей рядок виявляється останнім в сценарії, як і в lib1.pl з lib2.pl.

Виводимо всі змінні.У цих прикладах значення даних, переданих елементами управління HTML, виводилися безпосередньо оператором print. Але це можна зробити і простіше: те ж саме робить підпрограма PrintVariables, але лише у фіксованому фор­мате. Наприклад, можна замінити lib2.pl кодом, приведеним нижче:








Дата добавления: 2016-04-02; просмотров: 484;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.