Зауваження. Якщо startform викликається без аргументів, кнопка Submit повертає введені дані тій же формі. Нижче розповідається, як використовувати таку можливість.
Працюємо з текстовими полями.Для створення текстового поля, що дозволяє вводити текст, використовується CGI-метод textfleld. У прикладі нижче створюється текстове поле, предназначенное для зберігання імені користувача.
#!/usr/local/bin/perl
"Please enter your name: ',
$co->textfield('text')
Читання даних з елементів управління HTML.Елементи управління створені (точніше, поки лише текстове поле), але як рахувати з них дані? Коли користувач натискуватиме на кнопку Submit, броузер відправить дані форми сценарію cgi2.pl; CGI-метод param в нім якраз і призначений для читання даних. Йому досить передати ім'я, привласнене текстовому полю, в даному випадку — 'text' (див. попередній розділ), а вивід виконується таким чином:
#!/usr/local/bin/perl
$co = new CGI;
print "Your name is: ", $co->em($co->param( 'text')), ".";
Метод em створює мітку <ІМ>, яка більшістю броузеров сприймається як вказівка на перехід до курсивного зображення.
Працюємо з текстовими областями.Текстова область може містити декілька рядків тексту. От як в cgil.pl створюється текстова область, призначена для введення будь-якої думки користувача (задається як опис самої області в 10 рядків по 60 символів в кожній, так і деякого тексту за замовчуванням, а також імені області, 'textarea'):
#!/usr/local/bin/perl
$з = new CGI; print "Please enter your opinion; ", $co->p,
$co->' textarea' (
-name => 'textarea'
-default => 'No opinion'
-rows => 10,
-columns => 60 )
А у фрагменті нижче, CGI-метод param прочитує текст і виводить дані анкети:
print "Your opinions are: ", $co->em($co->param('textarea')), ".";
Працюємо з кнопками з незалежною фіксацією.Кнопки з незалежною фіксацією (checkbuttons) зазвичай об'єднуються в групу, що дозволяє повертати імена вибраних элементов управління в одному списку. У фрагменті коду, приведеному нижче, за допомогою CGI-метода, checkbox_group якраз і створюється така група. Їй привласнюється ім'я, кнопки отримують підписи і задаються пункти, вибрані за замовчуванням при виведенні Web-сторінки:
#!/usr/local/bin/perl $со = new CGI; print
"Please indicate what products you use. ",$co->p
$co->checkbox_group(
-name => 'checkboxes'
-values => ['Shampoo', 'Toothpaste', 'Bread', 'Cruise missiles'],
-defaults => ['Bread', 'Cruise missiles'] )
Код нижче призначений для перевірки і виведення вибору користувача. В даному випадку param повертає список імен помічених кнопок, тому було потрібно виклик функції join, об'єднуючою елементи списку в рядок:
print "You use these products: ", $co->em(join(", ", $co->param('checkboxes'))),
Працюємо із списками.Список з готовими значеннями можна прокрутити у разі, коли неможливо одночасно вивести па екран всі його рядки. Цей елемент управління создается CGI-методом scrolling_list. У сценарії cgil.pl список дозволяє вибрати рівень доходів. Він називається 'list' і включає рядки 'Highest', 'High', 'Medium' і 'Low', причому за замовчуванням вибране 'High':
#! /usr/local/bin/perl
$з = new CGI; print "Please indicate your income level: ",$co->p
$co->scrolling_list('list'
['Highest', 'High', 'Medium', 'Low'], 'High' )
Нижче наведений приклад читання і виведення вибраного рядка:
print "Your income level is: ", $co->em($co->param('list')), ".";
Працюємо з кнопками із залежною фіксацією.Кнопки із залежною фіксацією (radiobuttons) дозволяють зробити однозначний вибір з декількох значень. Наприклад, в cgil.pl створюється сім таких кнопок. Вони об'єднуються в групу 'radios' і набувають значень від '1' до '7', а мітки прикріпляються до них за допомогою хэша %labels:
#!/usr/local/bin/perl
$з = new CGI;
$labels{'1'}= 'Sunday'; $labels{'2'} = 'Monday':
$labels{'3'}= 'Tuesday'; $labels{'4'} = 'Wednesday';
$labels{'5' }= 'Thursday' $labels{'6'} = 'Friday';
$labels{'7'}= 'Saturday';
print "Please indicate your day of а week: ", $co->p,
$co->radio_group (
-name->' radios'
-values=>['1', '2', '3', '4', '5', '6', '7']
-default=>'1'
-labels=>\%labels )
Нижче наведений приклад читання і друку вибраного елементу, узятий з сценарію cgi2.pl:
print "Today is day ', co->param('radios') " of the week.";
Працюємо із списком, що розкривається.У HTML список, що розкривається, є набором елементів, який користувач може відкрити натисненням кнопки, що зазвичай супроводиться зображенням стрілки вниз. Користувач може вибрати елемент списку, а ви - визначити, на чому він зупинився. От як робиться вибір кількості непроханої пошти, яку користувач згоден отримувати (приклад узятий з нашої анкети). Елементи задаються за допомогою методу popup_menu:
#!/usr/local/bin/perl
$з = new CGI; print
$co->popup_menu (
-name => 'popupmenu'
-values => ['Very much', 'A lot','Not so much', 'None'] )
Далі наведений приклад читання і друку вибору користувача, узятий з сценарію cgi2.pl:
print "How much unsolicited mail you like"
$co->param('popupmenu');
Працюємо з прихованими полями даних.Дані, що зберігаються в прихованому полі на Web-сторінці, невидимі для користувача. (Це зручно, коли сценарій чекає отримати деякі незмінні відомості про сторінку.) Такі поля створюються таким чином:
#!/usr/local/bin/perl
$з = new CGI; print
$co->hidden(-name=>'hiddendata', -default=>'Rosebud')
І ось як вивести ці дані з cgi2.pl:
print "The hidden data is: ",
join(", ", $co->param('hiddendata'));
Створюємо кнопки відміни і підтвердження.Аби відправити на сервер дані форми, користувач повинен натискувати кнопку Submit. Вона створюється CGI-методом submit. Аналогічно, кнопка Reset, яка очищає дані форми, створюється методом reset. Нижче наведений приклад коду, що створює кнопки Submit і Reset на Web-сторінці:
#!/usr/local/bin/perl
$з = new CGI; print
$co->center(
$co-> submit(-value=>'Отправить')
$co->reset(-value=>'Отмена'))
Після натиснення на кнопку Submit дані вирушають сценарію cgi2.pl.
Закриваємо HTML-форму.Всі елементи управління, описані раніше, є частиною однієї форми анкети, створеної в cgil.pl. Для відкриття форми використовувався метод startform, а для її закриття — endform:
#!/usr/local/bin/perl
$з = new CGI; print
$co->endform
Закриваємо HTML-документ.Аби завершити роботу з HTML-документом, використовуйте метод end_html, який виводить теги </BODY></HTML>. От як закінчується сторінка з анкетою в сценарії cgil.pl:
#!/usr/local/bin/perl $со = new CGI;
$co->end_html;
На цьому cgil.pl кінчається. Коли користувач введе дані і натискуватиме кнопку Submit, буде викликаний сценарій cgi2.pl, який виведе зведення анкети.
Функціонально-орієнтоване CGI-програмування.До цих пір ми використовували об'єктно-орієнтовані методи. Проте пакет CGI має і функціонально-орієнтований інтерфейс (Втім, при зверненні до нього деякі можливості об'єктно-орієнтованою інтерфейсу стають недоступними). У прикладі нижче використовується функціонально орієнтований інтерфейс пакету CGI. Код генерує текстове поле з пропозицією ввести ім'я користувача. Після натиснення на кнопку Submit дані повертаються до того ж CGI-сценарию, який за допомогою функції рагаm виводить введене ім'я в нижній частині Web-сторінки:
Дата добавления: 2016-04-02; просмотров: 495;