Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2022-12-30 | 17 |
5.00
из
|
Заказать работу |
|
|
Следующий скрипт очень напоминает только что обсуждавшийся,за исключением того, что данный скрипт использует метод POST дляпосылки данных формы скрипу CGI. Метод POST дает директиву броузеру послать данные формы, используя стандартный вход скрипта, ане строку запросов. Полезность метода POST заключается в том, чтоон может обрабатывать большие объемы данных, тогда как метод GETограничен пространством переменной сервера, а также длиной URLброузера. Для чтения данных со стандартного ввода скрипт может вызвать функцию sys-read с нужным числом байт. Размер строки запроса в байтах содержится в переменной окружения CONTENT_LENGTH.После того как скрипт прочел строку запросов, дальнейшая обработка данных оказывается очень похожей на рассмотренную в предыдущем примере. Для того чтобы сделать, этот скрипт более коротким,обработка строки запросов осуществляется с помощью несколько более сложного подхода:
($cgi_bin, $cgi_script) = ($0 =~ m:(.*)[/\\](.*):); $content_length = $ENV(CONTENT_LENGTH); if (!definet($query) || $query eq '') { # сгенерируем форму print <<FORM; Content-type: text/html <HTML> <HEAD><TITLE>Sample POST Form </TITLE></HEAD> <BODY> What is your query? <P> <FORM METHOD="POST" ACTION="$cgi_script"> A checkBox. <BR> <INPUT TYPE="checkbox" NAME="chek" VALUE="on"><P> A radio button set. <BR> <INPUT TYPE="radio" NAME="button" VALUE="1"> 1<BR> <INPUT TYPE="radio" NAME="button" VALUE="2"> 2<BR> <INPUT TYPE="radio" NAME="button" VALUE="3"> 3<P> A data entry field<BR> <INPUT NAME="field"><P> Send the data.<BR> <INPUT TYPE="submit"> </FORM> </HTML> FORM } else { # распечатаем результаты print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>POST Form Result</TITLE></HEAD>\n" print "<BODY>\n"; print "Your query values:<P>\n"; @fields = split('&', $query); forech (@field) { /([^=](.*)/ && do { local ($filed, $value) = ($1, $2); $query{$field} = &decode($value); } } print "Check Box: $query{check}<BR>\n"; print "Radio Button: $query{button}<BR>\n"; print "Data Field:", &html($query{field}), "<BR>\n"; print "<HTML>\n"; } sub decode{ local ($value) = @_; $value =~ s/\+/ /g; $value =~ s/%([0-9A-H]{2})/pack('C',hex($1))/eg; return $value; } sub html { local ($value) = @_; $value =~ s/</</g; $value =~ s/>/>/g; return $value' }Этот скрипт использует одно регулярное выражение для анализа всех значений полей в строке запроса:
|
Вместо того чтобы присваивать значения каждого запроса отдельной переменной. данная программа хранит все запросы в ассоциативном массиве. В свою очередь скрипт может индексировать массив, используя нужные имена полей. Обратите внимание на сочетание [^=] в регулярном выражении. В данном контексте знак (^) неявляется якорем, указывающим на начало строки, как это было впредыдущем примере. В данном случае этот знак служит отрицаниемДля знака [=]. В таком качестве регулярное выражение может бытьпрочитано так: <соответствует одному или более символам, не включая знак равенства затем соответствует знаку равенства и затемсоответствует всем остающимся, символам>.
ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ CGI-LIB ЯЗЫКА PERL ДЛЯДЕКОДИРОВАНИЯ ФОРМ
Общедоступная библиотека Perl cgi-lib.pl упрощает обработку CGI-форм. Она содержит несколько полезных подпрограмм, однаконаибольший интерес представляет подпрограмма ReadParse, котораячитает и анализирует данные формы. Одним из больших достоинствcgi-lib является то, что она прозрачно обрабатывает любой типформ (ISINDEX, GET, POST) и даже формы, состоящие из многих частей для ввода больших объемов данных. Некоторые подпрограммы, такие как PrintHeader, HtmlTop,HtmlBot создают стандартные HTML-последовательности, но они слишком просты и не так полезны, как хотелось бы. Для использованияcgi-lib вы включаете исходные коды с помощью директивы require.Вы можете инсталлировать cgi-lib.pl туда же, где установленастандартная библиотека Perl (обычно C:\PERL\LIB для DOS- иWindowsсистем) или вы можете ссылаться на нее, используя указание полного пути. Для получения дополнительной информации или длязагрузки библиотеки cgi-lib.pl посетите Web-узел http://www.bio.cam.ac.uk/cgi-lib
|
|
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!