Анимация
JavaScript
|
Главная Библионтека : form Импортаровать все методы создания заполняемых форм, например text-field О. :html2 Импортировать все методы, которые генерируют стандартные элементы HTML 2.0. :html3 Импортировать все методы, которые генерируют элементы, предложенные в HTML 3.0 (такие как <table>, <super> и <sub>). :netscape Импортировать все методы, которые генерируют расширения HTML, характерные для Netscape. :shortcuts Импортировать все сокрашения, генерируемые HTML (т.е. "html2" + "html3" + "netscape"). :standard Импортировать "стандартные" возможности: "html2", "form" и "cgi". :all Импортировать все имеющиеся методы. Полный список приведен в модуле CGLpm, где определяется переменная %tags. Мы будем использовать только директиву : standard. (Подробная информация об импортировании функций и переменных из модулей приведена в главе 7 книги Programming Perl, а также на тап-странице ЕхроПег(З).) Вот как выглядит наша программа со всеми сокрашениями, которые используются в CGLpm: #I/usr/local/bin/perl5 -w # cgi-bin/ice cream # программа ответа на форму о любимом # сорте мороженого (версия 2) use CGI qw(:standard); print header{); print start html("Hello World"), hi("Hello World"); my $favorite = param("flavor"); print p{"Your favorite flavor is $favorite."); print end html () ; Видите, насколько это проще? Вам не нужно беспокоиться о декодировании данных формы, о заголовках и HTML-тексте, если вы этого не хотите. Генерирование формы Если вам надоело вводить параметры своей программы в броузер - создайте заполняемую форму. К таким формам привыкли большинство пользователей. Компоненты формы, которые принимают вводимые пользователем данные, иногда называются vidgets; считается, что этот термин гораздо удобнее, чем "устройства графического ввода". Такие компоненты форм включают одно- и многостроковые текстовые поля, всплывающие меню, прокручиваемые списки, различные виды кнопок и отмечаемых блоков. Создайте следующую HTML-страиицу, которая включает форму с одним компонентом "текстовое поле" и кнопкой передачи. Когда пользователь щелкает на кнопке передачи*, вызывается сценарий ice cream, заданный атрибутом ACTION. <-- ice cream.html --> <HTML> <HEAD> <TITLE>Hello Ice Cream</TITLE> </HEAD> <BODY> <Hl>Hello Ice Cream!</Hi> <FORM ACTION="http: www.SOMEWHERE.оrg/cgi-bin/ice cream"> Whats your flavor? <INPUT NAME="favorite" VALUE="mint"> <p> <INPUT TyPE="submit"> </FORM> </BODY> </HTML> Помните, что CGI-программа может выдавать ту выходную HTML-информацию, которую вы ей укажете. Эта информация будет затем передаваться в тот броузер, который обратится к URL данной программы. CGI-программа может, таким образом, не только реагировать на данные, введенные пользователем в форму, но и генерировать HTML-страницу с формой. Более того, одна программа может выполнять одну за другой обе эти задачи. Все, что вам нужно сделать,- это разделить программу на две части, которые делают разные вещи в зависимости от того, была ли программа вызвана с аргументами или нет. Если аргументов не было, программа посылает в броузер пустую форму; в противном случае аргументы содержат данные, введенные пользователем в ранее переданную форму, и программа возвращает в броузер ответ на основании этих данных. Некоторые броузеры позволяют обходиты:я без кнопки передачи, если форма содержит только одно поле для ввода текста. Если курсор находится в этом поле и пользователь нажимает клавишу [Enter], это считается запросом на передачу. Однако лучше здесь использовать традиционный способ. при размещении всех компонентов программы в одном CGI-файле упрощается ее сопровождение. Цена - незначительное увеличение времени обработки при загрузке исходной страницы. Вот как все это выглядит: #!/usr/local/bin/perl5 -w # программа ответа на форму о любимом сорте мороженого # *и генерирования этой формы* (версия 3) use CGI qw(:standard); my $favorite = param("flavor"); print header; print start html("Hello Ice Cream"), hi("Hello Ice Cream"); if ($favorite) ( print p("Your favorite flavor is $favorite,"); ) else { print hr, start form; print p("Please select a flavor: ", textfield("flavor","mint")); print end form, hr; Если BO время работы с броузером вы щелкнете на ссылке, которая указывает на эту программу (и если ссылка в конце URL не содержит ?whatever), ТО увидите экран, подобный изображенному на рис. 19.2. Текстовое поле изначально содержит значение по умолчанию, но это значение заменяется данными, введенными пользователями (если они есть). ; Netscape - (Hello Ice Cieam] File Edit Go Bookmarks Options Qiiectoiy Window Help
Go to: jhUp www perl conn/cgi-bin/ice cream Hello Ice Cream Please select a flavor rfaal {Document Done Рис. 19.2. Исходная заполняемая форма 0 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 [ 75 ] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |