Анимация
JavaScript


Главная  Библионтека 

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

мер, чтобы создать гиперссылку, после щелчка на которой будет выполнена 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