Логические операторы && (AND) и || (OR). 2 страница
Специальные переменные:
· $~ - построчный формат содержимого.
· $^ - формат заголовка листа.
· $% - номер листа.
· $= - строк в листе.
Если вы хотите использовать одни форматы для разных файлов, то самый простой путь:
use FileHandle; # Указать в начале программы
format_name файл имя_формата; # Формат содержимого листа.
format_top_name файл имя_формата; # Формат заголовка листа.
write(файл); # вывод данных.
Здесь 'файл' имеется в виду указатель файла, полученный командой open();
Если вам нужно в теле листа выводить разного рода форматы (например, заголовки групп или отбивку листа), то применяйте format_name.
CGI-программирование.
Использование CGI.pm.Итак, как coздается CGI сценарий? Теоретически это очень просто - программа CGI, как и любая другая программа на Perl, выполняет обычные команды Perl, когда она вызывается броузером (то есть когда броузеру в качестве URL задается CGI-сценарий). Все, что вы направляете в стандартный вывод, передается броузеру. Так, если CGI-сценарий выполняет команду print "Hello!", этот текст будет возвращен броузеру, и на странице появится надпись "Hello'" Но это рудиментарный способ. Требуется ли прочитать данные, введенные пользователем с помощью элементов управления, расположенных на странице? Или вы захотите создать эти элементы управления из сценария? Чтобы сделать все это и многое другое, используется прилагающийся к Perl пакет CGI.pm. (Далее мы рассмотрим другой популярный пакет — cgi-lib.pl.) С одной стороны, это стандартный способ работы с CGI средствами Perl, с другой — отличное введение в CGI.pm.
Итак, интерпретатор Perl содержит, среди других модулей, стандартный модуль CGI.pm. Поэтому если у вас установлен Perl, то, скорее всего, есть и CGI.pm. Начиная с пятой версии Perl CGI.pm стал объектно-ориентированным, хотя упрощенный функционально-ориентированный интерфейс все еще существует. В наших примерах мы будем использовать объектно-ориентированное программирование. Создавая с помощью CGI.pm объекты CGI, мы будем вызывать различные методы этого объекта. Существуют методы, соответствующие практически всем основным тегам HTML, и при их вызове создается нужный тег с указанными атрибутами. Все они могут получать именованные параметры (за исключением методов, требующих один аргумент), иными словами, требуется указать не только значение атрибута HTML, но и его имя. В следующем примере объект CGI создает Web-страницу посредством встроенных методов. Обратите внимание на именованные параметры метода textarea, задающие имя области редактирования текста ('textarea'), значение по умолчанию и размеры:
Листинг 5.6.Создание Web-страницы.
#!/usr/local/bin/perl
use CGI;
$co = new CGI;
print $co->header, $co->start_html(-title=>'CGI Example'),
$co->center($co->h1('Welcome to CGI!')),
$co->textarea (
-name => 'textarea',
-default => 'No opinion',
-rows => 10,
-columns => 60 ),
$co->end_html;
Если возможности объектно-ориентированного интерфейса не требуются, пакет CGI.pm также поддерживает простой функционально-ориентированный интерфейс. Мы рассмотрим пример применения функционально-ориентированного интерфейса CGI.pm ниже.
Создание и использование элементов управления HTML.Изучать программирование лучше всего на примерах. Потому ниже приводятся два CGI-сценария: один создает Web-страницу с элементами управления — полями ввода текста, переключателями, кнопками, включая Submit, а второй читает данные, введенные пользователем на этой странице. Оба сценария — вариации с небольшими дополнениями на тему оператора print, который собственно и создает страницу.
Первый сценарий хранится в файле cgil.pl, и в справочных целях полностью приводится в листинге 6-7. Когда пользователь открывает сценарий в броузере (переходя по его адресу — например, http://www.yourserver.com/user/cgi/cgil.pl), сценарий возвращает страницу с элементами управления HTML и текстом. В данном случае это страница анкеты.
Страница содержит приветствие и сообщение о том, что посетители, не желающие заполнять анкету, могут перейти по ссылке на сервер CPAN (Comprehensive Perl Archive Network — всеобъемлющий архив, посвященный языку Perl).
Затем вы увидите запрос имени пользователя с текстовым полем и вопрос о его мнении с областью редактирования текста (многострочное текстовое поле).
Просматривая анкету дальше, вы увидите еще несколько элементов управления — кнопки с зависимой и независимой фиксацией, списки, а также кнопка подтверждения и очистки анкеты. Позже мы рассмотрим, как создать все эти элементы управления на примере предложенных сценариев. Когда пользователь нажимает на кнопку Submit, расположенную в конце анкеты, броузер собирает данные, введенные на странице, и передает их другому CGI-сценарию, cgi2.pl. В справочных целях он приведен в листинге 6-8.
В общем, нет никакой необходимости создавать CGI-сценарий, генерирующий анкету, — можно просто написать страницу HTML, которая будет вызывать cgi2.pl по нажатию пользователем кнопки Submit. Подход, требующий генерации кода, выбран лишь затем, чтобы продемонстрировать обе стороны процесса — как создать элементы управления HTML из CGI-сценария и как прочесть данные из этих элементов управления.
Листинг 5.7. cgi1.pl
#!/usr/local/bin/perl
use CGI; $co = new CGI;
$labels{'1'} = 'Sunday'; $labels{'2'} = 'Monday';
$labels{'3'} = 'Tuesday'; $labels{'4'} ='Wednesday';
$labels{'5'} = 'Thursday'; $labels{'6'} = 'Friday';
$labels{'7'} = 'Saturday';
print $co->header(-charset=>'windows-1251', -lang=>'ru'),
$co->start_html(
-title => 'CGI Example',
-author => 'Andrew',
-meta => {'keywords' => 'CGI Perl'},
-BGCOLOR => 'white',
-LINK => 'red' ),
$co->center($co->h1('Here is the Survey!')),
$co->h2('Please fill out survey...'),
"Reasons for filling out our survey:", $co->p,
$co->ul( $co->li('Fame'), $co->li('Fortune'), $co->li('Fun' ) ),
"If you would rather not fill out our survey, ",
"you might be interested in ",
$co->a({href=>"http://www.cpan.org/"},"CPAN"),".",
$co->hr, $co->startform(
-method=>'POST',
-action=>'http://inna/scripts/web/l6/e8.pl'),
"Please enter your name: ", $co->textfield('text'), $co->p,
"Please enter your opinion: ", $co->p,
$co->textarea( -name => 'textarea',
-default => 'No opinion',
-rows => 10,
-columns => 60 ),
$ co->p, "Please indicate what products you use: ", $co->p,
$co->checkbox_group(
-name => 'checkboxes',
-values => ['Shampoo','Toophpaste','Bread', 'Cruise missiles' ],
-defaults => ['Bread','Cruise missiles'] ), $co->p,
"Please indicate your income level: ", $co->p,
$co->scrolling_list('list', ['Highest','High','Medium','Low' ], 'High'), $co->p,
"Please indicate your day of a week: ", $co->p,
$co->radio_group(
-name => 'radios',
-values =>['1','2','3', '4' ,'5' ,'6','7'],
-default => '1',
-labels => \%labels), $co->p,
"Thank you for filling out our survey. Please indicate ",
"How much unsolicited mail you like to get: ", $co->popup_menu(
-name => 'popupmenu',
-values => ['Very much','A lot','Not so much','None'] ), $co->p,
$co->hidden(-name=>'hiddendata', -default=>'Rosebud'),
$co->center( $co->submit, $co->reset, ),
$co->hr, $co->endform,$co->end_html;
Листинг 5.8.cgi2.pl
#!/usr/local/bin/perl
use CGI; $co = new CGI;
print $co->header(-charset=>'windows-1251', -lang=>'ru'),
$co->start_html(
-title => 'CGI Example',
-author => 'Andrew',
-meta => {'keywords'=>'CGI Perl'},
-BGCOLOR => 'white',
-LINK => 'red' ),
$co->center($co->h1('Thanks for filling out our survey.')),
$co->h3('Here is your responses...'), $co->hr;
if ($co->param()) { print "Your name is: ",
$co->em($co->param('text')), ".", $co->p, "Your opinions are: ",
$co->em($co->param('textarea')), ".",$co->p,
"You use these products: " ,
$co->em(join(", ", $co->param('checkboxes'))), ".",
$co->p, "Your income level is:", $co->em($co->param('list')),".",
$co->p, "Today is day ",
$co->em($co->param('radios')), "</em> of the week.", $co->p,
"How much unsolicited mail you like: ",
$co->em($co->param('popupmenu')),".", $co->p,
"The hidden data is ", $co->em(join(", ",
$co->param('hiddendata')))}
print $co->hr; print $co->end_html;
Начинаем HTML-документ.Начало работы над документом HTML строится следующим образом. Вначале вы создаете CGI объект, затем с помощью метода headerэтого объекта — HTTP-заголовок (в данном примере создается простая шапка документа, но допустимы сколь угодно сложные шапки с любыми атрибутами, например, -charset=>'windows-1251'). Заголовок можно сформировать и самостоятельно, напимер, командой print. Метод start_htmlначинает сам документ HTML. Этот метод создает секцию <HEAD>,а также позволяет указать некоторые атрибуты <BODY>, как-то: цвет для изображения фона и ссылок. Ниже приведен фрагмент кода cgil.pl, открывающий страницу. Обратите внимание: чтобы результаты работы методов header и start_htmlпопали на страницу, необходимо использовать функцию print:
#! /usr/local/bin/perl
$со = new CGI,
print $co->header,
$co->start_html(
-title => 'CGI Example',
-author => 'Andrew',
-meta => {'keywords'=>'CGI Perl'},
-BGCOLOR => 'white',
-LINK => 'red' )
Создаем заголовки HTML.После создания шапки CGI-методы типа h1, h2, h3 и др. помогут создать заголовки, соответствующие тегам <Н1>, <Н2>, <НЗ>и т. д. Ниже приведен фрагмент кода, генерирующий заголовки <Н1> и <Н2>в начале Web-страницы с анкетой. В данном случае это простое приглашение пользователю.
#!/usr/local/bin/perl
$со = new CGI; print
$co->h1('Here is the Survey!,'),
$co->h2('Please fill out survey...')
Центрируем элементы.Чтобы центрировать текст с помощью тегов <CENTER>,используется CGI-метод center.В следующем примере центрируется заголовок, созданный в предыдущем примере:
#'/usr/local/bin/perl
$со = new CGI; print
$co->center($co->h1('Here is the Survey!')),
$co->h2('Please fill out survey...'),
Создаем маркированный список.CGI-методы ul и li создают несортированный маркированный список (теги <UL> и <LI>соответственно). Ниже приведен фрагмент кода, представляющий пользователю несколько аргументов, побуждающих заполнить анкету:
#!/usr/local/bin/perl
$со = new CGI; print "Reasons for filling out our survey:",
$co->p, $co->ul(
$co->li('Fame'), $co->li('Fortune '), $co->li('Fun'), )
Создаем гиперссылку.Гиперссылки помещаются на страницу CGI-методом а, как в примере ниже, где выводится URL для перехода (на случай, если пользователь не заинтересован в заполнении анкеты, созданной сценарием cgil.pl):
#!/usr/local/bin/perl
$со = new CGI; print
"If you would rather not fill out our survey, ",
"you might be interesed in",
$co->a({href=>"http://www. cpan.org/"}, "CPAN"), ". "
Создаем горизонтальную полосу.Для создания горизонтальной линии (метка <HR>)используется CGI-метод hr:
#!/usr/local/bin/perl
$со = new CGI; print
$co->hr
Создаем HTML-форму.Элементы управления HTML группируются в формы. В примере с анкетой для создания формы использовался GGI-метод startform.После нажатия кнопки Submit данные из элементов управления должны быть прочитаны и переданы сценарию, формирующему сводку данных, то есть cgi2.pl. URL этого сценария указывается в атрибуте actionформы:
#!/usr/local/bin/perl $со = new CGI; print
$co->startform(
-method=>'POST',
-action=>'http://www.yourself.com/user/cgi/cgi2.pl')
#$co->startform()
Все последующие элементы управления будут включены в форму, потому что метод startformгенерирует тег <FORM>.
Замечание. Если 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 a 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-страницы:
Листинг 5.9. Функционально ориентированный интерфейс пакета CGI.
#!/usr/local/bin/perl
use CGI qw/:standard/;
print header(-charset=>'windows-1251', -lang=>'ru'),
start_html(' CGI Functions Example' ),h1('CGI Functions Example'),
start_form, "Please enter your name: ", textfield('text'), p,
submit(-value=>'Отправить'), reset(-value=>'Отмена'), end_form,hr;
if(param()) {print "Your name is: ",em(param('text')), hr;}
print end_html;
Использование cgi-lib.pl.Ранее рассказывалось о CGI-программировании на базе методов стандартного модуля CGI.pm. He менее популярен среди программистов пакет cgi-lib.pl. Поскольку многие CGI-сценарии на Perl написаны с его помощью, далее рассказывается именно о нем. Авторские права на этот пакет принадлежат его создателю Стивену Е. Бреннеру, на домашней странице которого (http://cgi-lib.stanford.edu/cgi-lib) можно получить копию cgi-lib.pl. Вам разрешается работать с cgi-lib.pl и даже изменять его до тех пор, пока ваши действия не будут ущемлять описанные в начале файла авторские права. Особая процедура установки не требуется — файл cgi-lib.pl копируется в каталог, где хранятся CGI-сценарии, и с помощью команды require подключается к ним:
require 'cgi-lib.pl';
Если у вас нет этого пакета - просто используйте модуль CGI.pm в таком контексте:
use CGI qw/:ReadParse, PrintHeader, HtmlTop, HtmlBot, SplitParam/;
Далее создаются два сценария, генерирующие те же страницы, что и в предыдущей главе, но вместо CGI.pm на сей раз будет использован пакет cgi-lib.pl. Предыдущие сценарии назывались cgil.pl и cgi2.pl, а в этой речь пойдет о libl.pl и lib2.pl.
Пакет cgi-lib.pl подключается к сценарию с помощью команды require. (He запрещено использовать также use, но вряд ли вам встретится такой вариант.) В отличие от модуля CGI.pm, количество функций, генерирующих теги HTML в cgi-lib.pl, крайне ограничено. Обычно эти теги приходится выводить вручную. (Пакет cgi-lib.pl предназначался в первую очередь для разбора посланных сценарию данных.) Впрочем, некоторые теги HTML все же генерируются автоматически: подпрограмма PrintHeader создает шапку HTML, необходимую для страницы, раздел HtmlTop (метки <HEAD> и <BODY>). Также с ее помощью можно создать заголовок страницы, как показано в следующем примере, задающем страницу с заголовком "My Web Page":
#!/usr/local/bin/perl
require 'cgi-lib. рl';
print &PrintHeader;
print &HtmlTop ("My Web Page");
После описания начала страницы остальная разметка HTML (в том числе формы) создается путем непосредственного вывода тегов. Например, вот так задается заголовок <Н1>:
print "<CENTER><H1>Hello!</H1></CENTER>";
Чтобы прочитать данные, переданные CGI-сценарию, используется подпрограмма ReadParse. Она создает хэш (обычно называемый %in) и записывает в него значения элементов данных, переданных сценарию. Элементы данных адресуются по именам, присвоенным соответствующим элементам HTML. Например, следующий код создает хэш %in и, читая данные текстового поля 'text', выводит их:
&ReadParse(*in);
print "Here is the text: <EM>", $in('text'), "</EM>.";
Чтобы завершить Web-страницу метками HTML </BODY> и </HTML>, можно использовать подпрограмму HtmlBot (она просто возвращает строку "</BODY>\n</HTML>\n"):
print &HtmlBot;
Вот так, вкратце, и работает cgi-lib.pl.
Листинг 5.10. lib1.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>Here is the Survey!</H1></CENTER>
<H2>Please fill out our survey</H2>
Reasons for filling out our survey: <P><UL>
<LI>Fame</LI><LI>Fortune</LI><LI>Fun</LI></UL>
If you would rather not fill out our survey, you might be interested in <A HREF=http://www.cpan.org>CPAN</A>
<HR><FORM METHOD=\"POST\"
ACTION=\"http://inna/scripts/web/l6/lib2.pl\"
ENCTYPE=\"application/x-www-form-urlencoded\">
Please enter your name.
<INPUT TYPE=\"text\" NAME=\"text\" VALUE=\"\"><P>
Please enter your opinion:<P><TEXTAREA NAME=\"textarea\"
ROWS=10 COLS=60>No opinion</TEXTAREA><P>
Please indicate what products you use <P>
<INPUT TYPE=\"checkbox\" NAME=\"checkboxes\"VALUE=\"Shampoo\"> Shampoo
<INPUT TYPE=\"checkbox\" NAME=\"checkboxes\"VALUE=\"Toophpaste\"> Toothpaste
<INPUT TYPE=\"checkbox\" NAME=\"checkboxes\" VALUE=\"Bread\" CHECKED> Bread
<INPUT TYPE=\"checkbox\" NAME=\"checkboxes\" VALUE=\"Cruise missiles\" CHECKED>Cruise missiles </P>
Please indicate your income level:<P><SELECT NAME=\"list\" SIZE=4>
<OPTION VALUE=\"Highest\">Highest
<OPTION SELECTED VALUE=\"High\">High
<OPTION VALUE=\"Medium\">Medium
<OPTION VALUE=\"Low\">Low
</SELECT><P>
Please indicate your day of the week:<P>
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"1\" CHECKED>Sunday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"2\">Monday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"3\">Tuesday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"4\">Wednesday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"5\">Thursday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"6\">Friday
<INPUT TYPE=\"radio\" NAME=\"radios\" VALUE=\"7\">Saturday <P>
Thank you for filling out our Survey. Please indicate how
much unsolicited mail you like to get.
<SELECT NAME=\"popupmenu\">
<OPTION VALUE=\"Very much\">Very much
<OPTION VALUE=\"A lot\">A lot
<OPTION VAlUE=\"Not so much\">Not so much
Дата добавления: 2015-08-26; просмотров: 1038;