Анимация
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


Средства SSI у разных Web-серверов реализованы по-своему. Поэтому дескрипторы подстановки часто имеют различный синтаксис, а отдельные их виды поддерживаются далеко не всеми серверами. А некоторые Web-серверы вообще не поддерживают средств SSI, например Personal Web Server компании Microsoft. Дескрипторы SSI, используемые на этом занятии, совместимы с такими самыми популярными Web-серверами (на момент написания этой книги), как Apache и Internet Information Server компании Microsoft.

Цель этого занятия состоит отнюдь не в том, чтобы вы узнали все о средствах SSI, поскольку их слишком много и к тому же они зависят от типа Web-сервера Тем не менее вам следует познакомиться с дескриптором SSI lexec, который в HTML-файле имеет следующий вид:

<1-fexec cgi="/cgi-bin/stocfcprice.cgi*->

Встретив дескриптор texec, Web-сервер запустит CGI-программу stockprice.cgi. Результат работы этой CGI-программы помещается в HTML-поток,, который направляется броузеру. После заверщения CGI-программы остальная часть ПТМТ-файла (расположенная после дескриптора »ехес) посылается

броузеру как обычно.

Пример: работа с дескрипторами SSI

Для данного примера создадим простую страницу, которая выводит текст "Привет, мир!", и картинку, изменяющуюся в зависимости от времени суток. Для начала нам потребуются два рисунка: один - для ночи, другой - для дня (рис. 20.3),



Рис. 20,3, Изображения дня и ночи: day.jpg и nightjpg

Затем нам потребуется HTML-файл с приветственным сообщением (см. ниже). Если вы создаете этот пример для себя, не забудьте о том, что ему, скорее всего, придется назначить расщирение . shtml или . stm, чтобы Web-сервер смог распознать дескрипторы SSI.

<BTHL> <HEAD>

<Т1ТЬЕ>Страница приветстввя</Т1ТЬЕ>

</HEAD>

<BODY>

Добро пожаловать на кою 1л/еЬ-стран.иц/. Сейчас из окна я вету!

<!-texec cgi="/cgi-bin/sunmoon.cgi"~>

</BODY>

</HTML>

Текст программы приведен в листинге 20.2.



огрма твия, вь изображен дня и

t!/usr/bin/perl -w

1l: 2: 3: 4: 5: б: 7: 8:

9: f Счигаа!, что до б утра и пхзк б ве=а 10: if ($hour<6 сзг $hour>18) { 11: Simage="night.jpg-;

12: } else {

13: Simage="day.jpg";

14: }

15: print header;

16; trint oaKIMG SRC=Simaqe" ALT="Simaqe">\iHi

vse CEI qw(:all);

I Узнаем EEara в 24-чассвсм фсрию с гоещею фунщш localtiitBO.

$hour=(localtime)[2]; щ $image;

на ре

Проведем анализ программы.

Строка 3. Поскольку это CGI-программа, необходимо подключить модуль CGI. Директива qw( :а11)гарантирует возможность использования любых

функций модуля.

Строка 6. Функция localtime в контексте списка возвращает список элементов, описывающих текущее время (подробнее об этом мы говорили на 4-м занятии, "Укладка строительнтх блоков: списки и массивы"). При заключении в круглые скобки функция localtime рассматривается в контексте списка, а элемент означает, что будет возвращен третий элемент списка (счет ведется с нуля) и присвоен переменной Shour. Этот элемент списка

представляет собой время в 24-часовом формате.

Строка 15. Заголовок, оговоренный протоколом HTTP, по-прежнему должен выводиться с помощью функции header модуля CGI, несмотря на то, что, казалось бы, половина Web-страницы уже готова.

Строка 16. В дескрипторе <IMG>, предназначенном для вывода изображения, указывается либо значение $day, либо значение $nignt, а дескриптор ALT используется на случай, если броузер не сможет вывести это изображение.

Текс фаницы, отображенной броузером следующий вид:

в 8 часов утра, будет иметь

<HTML> <HEAD>

<Т1ТЬЕ>Страница нряветствия</Т1ТЬЕ>

</HEAD> <BODY>

Добро пожаловать на но» Web-страницу. Сейчас из окна я вижу:

<IMG SRC="day.jpg" ALT="day.jpg">

</BQDY>

</HTML>



Выглянем из окна

БОЛЬШИНСТВО рассмотренных до сих пор функций из модуля COI предназначены либо для управления броузером (функция header), либо для обработки параметров, переданных CGI-программе (функции escape и param). Кроме них в модуле CGI разработан целый набор функций, предназначенных для получения информации о типе броузера и сервера. Получить представление о таких функциях можно из табл. 20.1, а полный их список приведен в электронной документации на модуль COI, к которой можно получить доступ, введя после приглашения команду perldoc COI.

Большинство описанных в этом разделе функций зависит от значений, которые предоставляются Web-сервером или посылаются Web-броузером в сеансе связи с сервером через протокол HTTP, При этом следует иметь в виду, что Web-броузеры не всегда сообщают точные сведения (например, что касается значения referer или user agent), да и Web-cepeepy могуг обмануть ваши ожидания (например, в отношении значения server name).

Таблица 20.1. Неполный список информационных функций

Функция Описание

referer Возвращает URL гиперссылки, с помощью которой будет осуществлен

переход к этой странице. (Да, сформулировано неправильно. В оригинальном документе стандартов Internet, описывающем это поле, присутствовала орфографическая ошибка, которая намеренно не исправлена для согласованности документов.)

user agent Возвращает строку, идентифицирующую тип Web-броузера, который запросил страницу (например, броузеры Netscape, IE или Lynx)

remote host Возвращает либо имя компьютера (host), либо IP-адрес системы, которая запросила страницу. Получаемое значение зависит от того, как сконфигурирован ваш Web-сервер и доступно ли для него имя удаленного компьютера (hostname)

script name Возвращает имя данной CGI-программы в виде части URL (например, /cgi-bin/foo.cgi)

Возвращает имя сервера, на котором работает

virtualhOBt Возвращает имя виртуального Web-сервера, который использовался для выполнения данной CGI-программы. Эта функция отличается от функции server name, поскольку зачастую один сервер может управлять несколькими Web-узлами. Функция virtual host возвращает имя конкретного узла, который был затребован

Использование этих функций демонстрируется на примере следующей короткой программы:

tl/usr/bin/perl -w

use strict;

use CGI qw(:all);

print header;

20- C. Работа с 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