Анимация
JavaScript
|
Главная Библионтека Если CGI.pm уже инсталлирован у вас в системе, вы можете прочесть его полную документацию, воспользовавшись любым из способов, которые вы используете для чтения man-страниц Perl, например с помощью команд тап(1) или perldoc(J) либо обратившись к HTML-варианту документации. Если ничего не получается, прочтите файл CGI.pm: документация на модуль встроена в сам модуль, представленный в простом формате pod *. Разрабатывая CGI-программы, держите экземпляр man-страницы модуля CGI.pm под рукой. Она не только содержит описание функции этого модуля, но и загружается вместе со всевозможными примерами и советами. Ваша CGI-программа в контексте На рис. 19.1 показаны взаимосвязи между Web-броузером, Web-сервером и CGI-программой. Когда вы, работая со своим броузером, щелкаете на какой-либо ссылке, помните, что с этой ссылкой связан универсальный локатор ресурса, URL (Uniform Resource Locator). Этот URL указывает на Web-сервер и ресурс, доступный через данный сервер. Таким образом, броузер взаимодействует с сервером, запрашивая указанный ресурс. Если, скажем, ресурс представляет собой HTML-форму, предназначенную для заполнения, то Web-сервер загружает эту форму в броузер, который затем выводит ее на экран, чтобы вы могли ввести требуемые данные. Каждое предназначенное для ввода текста поле в этой форме имеет имя (указанное в HTML-коде формы) и соответствующее значение, которым является все, что вы вводите в этом поле. Сама форма связана (через HTML-директиву <FORM>) с CGI-программой, которая обрабатывает данные, введенные в форму. Когда вы, заполнив форму, щелкаете на кнопке Submit, броузер обращается к URL CGI-программы. Перед этим он добавляет в конец URL так называемую строку запроса, которая состоит из одной или более пар имя=значение; каждое имя - это имя поля, предназначенного для ввода текста, а каждое значение - данные, которые вы ввели. Таким образом, URL, в который броузер передает данные, введенные вами в форму, выглядит приблизительно так (строкой запроса считается все, что стоит после вопросительного знака): http: www.SOMEWHERE.org/cgi-bin/sorae cgi prog?flavor=vanillaSsize=double Вы видите здесь две пары имя=значение. Такие пары отделяются друг от друга амперсандом (&). Работая с модулем CGI.pm, об этой детали можете не беспокоиться. Компонент /cgi-bin/some cgi prog/мы рассмотрим немного позднее; на данный момент важно лишь то, что он содержит путь к CGI-программе, которая будет обрабатывать данные, введенные в HTML-форму. Pod сокращенно обозначает plain old documentation ("обычная старая документация"). Это упрощенная форма предстаапения, используемая для всей документации на Perl. Принцип работы этого формата изложен на тап-странице perlpod(l), а некоторые pod-тpaнcлятopь[ описаны на man-страницах pod2man(l), pod2html(l) и pod2text(l). VVWW-броузер (на клиенте) Сервер Пользователь Приложение CGll Пользователь заполняет форму Выходная информация получена Пользователь запрашивает форму --© Посылает форму клиенту Пользователь - передает форму выходная информации передается клиенту СЕТЬ Сервер извлекает форму Выходная информация передается серверу Обрабатывает данные Рис. 19.1. Заполнение формы с привлечением CGI Когда Web-сервер (в данном случае www.SOMEWHERE.org) получает URL от вашего броузера, он вызывает указанную CGI-программу и передает в нее в качестве аргументов пары имя=значение. Программа затем делает то, что должна делать, и (как правило) возврашает HTML-код серверу, который, в свою очередь, загружает его в броузер для представления пользователю. "Переговоры" между броузером и сервером, а также между сервером и CGI-программой ведутся в соответствии с протоколом, известным как HTTP. При написании CGI-программы об этом беспокоиться не нужно, т.к. модуль CGI.pm сам решает все вопросы, связанные с использованием протокола. Способ получения CGI-программой ее аргументов (и другой информации) от броузера через сервер описывается спецификацией Common Gateway Interface. Об этом тоже не нужно беспокоиться; как вы вскоре увидите, CGI.pm автоматически обрабатывает эти аргументы, не требуя от вас каких-либо дополнительных действий. Наконец, вам следует знать, что CGI-программы могут работать с любым HTML-документом, а не только с формой. Например, вы могли бы написать такой HTML-код: Click <а href="http: www.SOMEWHERE.org/cgi-bin/fortune.cgi">here</a> to receive your fortune. Ищ1чаел1 Perl Здесь fortune.cgi - программа, которая просто вызывает программу fortune (в UNIX-системах). В данном случае в CGI-программу не вводятся никакие аргументы. Другой вариаггг: HTML-документ мог бы содержать две ссылки для пользователя - одну для получения предсказания судьбы, вторую для выяснения текущей даты. Обе ссылки могли бы указывать на одну и ту же программу - в одном случае с аргументом fortune, поставленным в URL после вопросительного знака, а в другом случае - с аргументом date. Эти HTML-ссылки выглядели бы так: <а href="http: www.SOMEWHERE.org/cgi-bin/fortune or date?fortune"> <a href="http: www.SOMEWHERE.org/cgi-bin/fortune or date?date"> CGI-программа (в данном случае fortune or date) определила бы, какой из двух возможных аргументов получен, и выполнила бы соответственно программу fortune или программу date. Как видите, аргументы вовсе не должны иметь формат имя=значение, характерный для HTML-форм. Вы можете написать CGI-программу, которая будет делать практически все, что вы пожелаете, и можете передавать ей практически любые аргументы. В этой главе мы будем, главным образом, рассматривать применение HTML-форм. При этом мы предполагаем, что вы уже знакомы с простыми HTML-кодами. Простейшая CGI-программа Вот исходный код ващей первой CGI-программы. Она настолько проста, что в ней даже не прищлось использовать модуль CGI.pm: #!/usr/bin/perl5 -w #самая легкая из CGI-программ print <<END of Multiple Text; Content-type: text/html <HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <B0DY> <Hl>Greetings, Terrans!</Hl> </B0DY </HTML> END of Multiline Text Каждый раз, когда эта программа вызывается, она выдает на экран одно и то же. Это, конечно, не особенно интересно, но позднее мы сделаем ее более занимательной. 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 |