Анимация
JavaScript
|
Главная Библионтека мер, чтобы создать гиперссылку, после щелчка на которой будет выполнена CGI-программа с параметрами sign и year, которым присвоены значения Овш и 1969 соответственно, используется следующий HTML-код: <А. HREF="http; www,server.com/cgi-bin/astrology.cgi? sign=OBeHS уеаг=1969">Овен, гсд Петуха</А> Внутри параметры обрабатываются функцией модуля CGI обычным способом: t!/user/bin/perl -w use CGI qw{:all); use strict; print header; print "ГОД ", param(year), " иактрсндаия пэд зенкм ", param(sign), " означает, xro вы - Еьцршряз! личность.Xn*; Передать можно любое количество параметров. Если нужно передать пустой параметр (без значения), просто используйте одно его имя, подобно тому, как мы поступили с параметром author в следующем примере: <А Н11ЕГ=" http: / /www. server. coK/cgi-bin/boo)c. cgi ?author=s titnefc3awol">:wcaf</ Использование специальных символов При вызове с параметрами следует знать о существовании некоторых специальных символов, которые не могут быть частью URL. Например, символ ? (знак вопроса) является специальным и отделяет основную часть URL от списка параметров. К числу других специальнгх символов относятся такие символы, как &, пробелы и кавычки. Полный список специальных символов приведен в документе стандартов Internet RFC 2396. Чтобы сделать один или несколько специальных символов частью RL, нужно закодировать их специальным образом. Это означает, что ASCII-значение этого символа следует преобразовать в двузначное шестнадцатеричное число, а затем поместить перед ним символ процента. Результат применения описанного "рецепта" кодирования для фразы "Привет, мир!" выглядит следующим образом1: Привет! 2С%201ир1 Вполне понятно, что в такой частично "зашифрованной" строке можно легко допустить ошибку и, вообще, ее вид малопривлекательный. Поэтому в модуле CGI предусмотрена функция, предназначенная для автоматического создания подобных строк. На следующем примере показано, как получить URL с нужной "шифровкой" специальных символов; В этом примере русский текст использован только для наглядности. При передаче же кириллических символов в виде параметров URL их нужно закодировать точно так же, как и специальные символы. - Прим. ред. fl/user/bin/perl -w USB strict; t Функция escape дзшв. пь указаш явю use CCI qy(:all escape); pdnt header; It Sstring="npHBeT, ыир1"; pirint <A HREF="http: www. server.com/cgl-bin/parrot. cgi?message=, escape<Sstring) , ">1ел)снятездась</А>; Этот фрагмент программы создает правильно закодированную (с учетом требований к URL) HTML-ссылку Обратите внимание на то, как в этом коде используется модуль COI: use COI qw(:all escape). При использовании модуля COI функция escape обычно недоступна для программы, и в случае необходимости вам придется указать ее в операторе use в явном виде. Следующая программа создает более длинный URL-адрес с закодированными значениями специальных символов: I!/user/bin/perl -w use strict; use CI qlrall escape) ; ny ks=( Insamni> S. King, Nutshell => 0\Reilly); i ЬЕРЗИЕетх! с ОСЕЕЕШГО ШЬ 11 $url="http: www.server. coE/cgi-bin/add books. cgi?"; f irnH сбср Цен ксx]кaIeEBupи "." fateadiw $titnfi (keys ibooks) { $i;n:l .= escape ($titl); t KtpKty нвзванке и дрбсшп $Ln:l .= $url .= esc)e{$bociks{$title}); * Аеншпяго для актера $url.=-fi"; p±it "<A HREF=5iirl>flo6aBHTb тхалт В evBwaieis/</k>; Построенное в результате этой программы значение URL будет иметь следующий вид: http: www.server.com/cgi- bin/add books.cgi?Insomnia=S.%20KingbNutshell=0»27Reillyi Последний символ & в конце URL игнорируется граммой при выделении параметров с помощью функции param. Включения на стороне Web-сервера Часто при разработке Web-страницы оказывается, что большая часть ее содержимого абсолютно статична. Изредка меняются некоторые части Web-страницы, но в целом она остается такой же. Рассмотрим Web-страницу, на которой отображается курс акций некоторой компании. Подавляющая часть страницы будет, по всей вероятности, статичной - средства перемещения, изображения, эмблемы, информация об использовании, верхние и нижние колонтитулы, заголовки и пр. Самая важная часть этой страницы - курс акций - генерируется путем считывания нужной информации из базы данных и заполнения соответствующих полей. Чтобы облегчить создание подобных страниц, большинством Web-серверов поддерживается средство, называемое включениями на стороне сервера (server-side includes - SSI), которое также называется средством синтаксического анализа сервера (server-parsed HTML). Это средство позволяет создателю Web-узла на базе языка HTML строить Web-страницу, которая по большей части статична, но при этом с помощью Web-сервера изменять отдельные ее части (рис. 20.2). Такую Web-страницу можно представить в виде бланка, который нужно заполнить, а заполнение этого "бланка" выполняется CGI-программ ой. Страница для броузера Web-сервер
Web-страница с SSI Рис, 20.2. b-сервер может добавлять некоторые элементе! к L-странице Администратор вашего Web-сервера должен активизировать работу SSL Чтобы сервер должным образом "понимал" HTML-код с встроенными SSI-элементами, вам, возможно, придется присваивать таким HTML-страницам специальные расширения .shtral или .stm. Обратитесь к документации по Web-серверу или к администратору узла, чтобы выяснить, как используется средство SSI на данном конкретном сервере, поскольку директивы и синтаксис могут различаться от сервера к серверу. Web-сервер во время чтения статической HTML-страницы с диска отыскивает дескрипторы, которые заставляют его выполнять подстановку значений. Например, дескриптор <!--techo var="LAST MODIFIED"--> заставит Web-сервер Apache подставить вместо него дату последней модификации текущей HTML-страницы. Броузер не "видит", как происходит этот процесс. Он видит только дату, уже подставленную сервером. Проиллюстрируем процесс подстановки на следующем примере. Исходная Web-страница Преобразованная Web-страница <HTML> <BODY> Дата последней мофа: <!-fecho var="LAST MODIFIED"-> </BODY> </нт> <HTML> <0DY> Дата последней мофа: Wednesday -2000 21:29:31 EDT </B0DY> </HTML> 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |