Изучение преимуществ технологии Server Side Includes

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    16,72 Кб
  • Опубликовано:
    2014-04-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Изучение преимуществ технологии Server Side Includes

Содержание

Введение

.Основные характеристики технологии Server Side Includes

.1Основы SSI

.2Команды SSI

.3Главные серверные включения и их атрибуты

.Механизм SSI

.1Включение механизма Server-Side Includes

.2Базовые директивы

.3Переменные включения

.4Подстановка переменных

.5Условные операторы

.Практическое использование SSI

.1Добавление разметки

.2Формирование страницы из шаблона

.3Пример начального файла сервера

.4Пример трех шаблонов

Заключение

Список литературы

Приложения

Введение

Интернет-технологии в наши дни становятся все доступнее. Открыть свой сайт в Интернете может любой, выбор возможностей - на любой вкус. Можно кропотливо выписывать тэги в «Блокноте», можно использовать специальные визуальные редакторы, можно просто набросать страницу в Microsoft Word и сохранить в формате HTML. Словом, «твори, выдумывай, пробуй!». Совершенно не обязательно быть профессиональным программистом или дизайнером, все чаще на арену Интернета выходят любители.- это директивы, вставляемые прямо в HTML-код и служащие для передачи указаний Wев-серверу. Встречая такие директивы, которые, кстати, называются SSI-вставками, Web-сервер интерпретирует их и выполняет соответствующие действия. Например: вставка HTML-фрагмента из другого файла, динамическое формирование страничек в зависимости от некоторых переменных (например, типа браузера) и другие не менее приятные вещи.

Преимущества SSI проявляются, когда нужно поддерживать достаточно большой по объему сайт, имеющий определенную структуру и повторяющиеся элементы кода на всех страничках. При применении серверных включений сайт удобно рассматривать как состоящий из отдельных блоков, каждый из которых отвечает за свою часть странички. Эти блоки практически неизменны и повторяются от страницы к странице. В эти блоки можно вынести такие элементы странички как: главное меню, рекламные вставки, повторяющиеся элементы оформления страничек и т.д. Физически эти блоки представляют собой просто HTML-файлы, содержащие часть кода, нужную для выполнения их задачи.

Объектом исследования курсовой работы является технология Server Side Includes (SSI).

Предметом исследования курсовой работы является практическое применение данной технологии.

Целью данной курсовой работы является изучение преимуществ технологии SSI.

1. Основные характеристики технологии Server Side Includes

1.1Основы SSI

server side includes сервер

Технология SSI (Server Side Includes - включения на стороне сервера, разработанная компанией Questar Microsystems) - несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include <#"justify">·размещение неоднократно используемых элементов. Если имееется элемент, который появляется на каждой странице вашего сайта, например, сложный навигационный заголовок, вы можете разместить в исходном тексте единственную SSI-команду, которая просто будет копировать его.

·размещение одной строкой элемента, который постоянно изменяется. Например, если вы поддерживаете домашнюю страницу, на которой имеется ежедневно меняемой сообщение, используйте команду SSI (и сценарий на сервере) ля автоматического замещения сообщения.

·вывод даты и времени последнего обновления.

·размещение многочисленным пользователям предоставлять содержимое для включения его в web-страницу без предоставления им доступа к исходному HTML коду. Например, возможность передачи еженедельных обновлений по электронной почте. Сервер может запустить сценарий, который преобразует сообщение в текстовый файл и затем командой SSI вставит его на web-страницу.

·SSI может обслуживать web-страницу осуществляющую запрос с браузера. Даже можно обслуживать документы на базе имени домена пользователя.

Для того чтобы сервер знал, что страничка не обычная, а содержит SSI-директивы, она имеет специальное расширение: *.shtml или *.shtm, наличие которого и заставляет web-сервер предварительно обрабатывать странички. Вообще-то, расширение может быть любое - в зависимости от конфигурации web-сервера, но в основном применяется именно *.shtml.

Полная страничка формируется web-сервером на лету, собирая код странички из таких вот блоков. Для того, чтобы указать серверу, какой блок нужно вставить и в каком месте странички, используется специальная форма записи в виде комментария. Вот такая:

<!--#command param="value" -->

где # - признак начала SSI-вставки- SSI-команда- параметры SSI-команды.

1.2Команды SSI

команд насчитывается около десятка, но я расскажу только о самых употребляемых. Самая популярная команда - это команда включения содержимого одного файла в другой:

<!--#include virtual="/path/file.ssi" -->

где include - команда вставки- параметр, определяющий, как трактовать путь - как абсолютный file или как относительный virtual

"/path/file.ssi" - путь к включаемому файлу

Результатом ее выполнения будет вставка содержимого файла file.ssi в месте появления данной директивы. При просмотре сформированного исходника HTML-файла мы не увидим никаких признаков SSI, т.к. данный механизм действует абсолютно прозрачно для браузеров, они получают исключительно корректный HTML-код.

Следующая команда - это команда установки значения переменной:

<!--#set var="pic" value="picture.gif" -->

где var - команда установки значения переменной- имя переменной

"picture.gif" - значение переменной

В данном случае мы определили переменную с именем pic и присвоили ей строковое значение "picture.gif". Значение переменной pic теперь доступно внутри SSI-вставки, и мы можем его использовать по нашему усмотрению.

Например, используя одну и ту же SSI-вставку, но с разными значениями определенной в ней переменной, мы получим различные результаты.

Перед тем, как показать реальный пример использования переменных в SSI-включениях, я расскажу о некоторых командах, применяемых при работе с переменными. Во-первых, это команда печати значения переменной:

<!--#echo var="pic" -->

Ее выполнение приведет к тому, что в месте появления команды напечатается значение переменной pic, т.е. "picture.gif".

Переменная может участвовать в выражениях, в этом случае перед ней ставится знак '$', показывающий, что это именно переменная, а не просто текст.

Вот пример:

<!--#set var="A" value="123" -->

<!--#set var="B" value="$A456" -->

После такого присвоения переменная B будет содержать строку "123456". Если же в текст понадобится просто вставить знак '$' или какой-нибудь из других специальных знаков, то его нужно предварить слешем, вот так: '\$'. В некоторых случаях для избежания двусмысленности значение переменной может быть заключено в фигурные скобки: "${A}".

Более сложное применение переменных возможно с использованием условных операторов, имеющих следующую форму написания:

<!--#if expr="condition" -->

<!--#elif expr="condition" -->

<!--#else -->

<!--#endif -->

где condition - условие для сравнения

В зависимости от результатов проверки мы можем подставить тот или иной фрагмент кода. Допустим, мы можем проанализировать тип браузера пользователя и в зависимости от этого выдать либо код для Netscape Navigator-а, либо Internet Explorer-а. Это может оказаться полезным в некоторых случаях, когда невозможно сделать страничку, которая корректно отображалась бы в обоих браузерах. Вот пример использования условного оператора:

<!--#set var="Monday" -->

<!--#if expr="$Monday " -->

Сегодня понедельник.

<!--#else -->

Что угодно, но не понедельник.

В данном случае условием проверки является существование переменной $Monday и, в зависимости от этого, подстановка того или иного HTML-кода.

Теперь давайте рассмотрим реальный пример применения SSI для формирования сложного документа из нескольких SSI-вставок.

Вначале напишем текст основного HTML-документа, полагая, что SSI-вставки находятся в каталоге /ssi:

index.shtml

<!--#set var="title" value="Что такое SSI?" -->

<!--#set var="keywords" value="SSI, SHTML, CGI, Apache" -->

<!--#set var="description" value="Пример использования SSI." -->

<!--#include virtual="ssi/_header.shtml" -->

Здесь находится текст нашей странички.

<!--#include virtual="ssi/_footer.shtml" -->

Теперь напишем код для этих SSI-вставок:

_header.shtml

<html>

<head>

<title><!--#echo var="title" --></title>

<meta name="keywords" content="<!--#echo var="keywords" -->">

<meta name="description" content="<!--#echo var="description" -->">

_footer.shtml

</body>

</html>

Как видите, основной документ предельно упрощен и состоит из директив, устанавливающих значения переменных title, keywords и description, которые и будут подставлены в код странички при обработке SSI-вставок, определяющих код для верхней и нижней частей странички. Реальный код SSI-вставок обычно гораздо сложнее и может включать в себя большее количество определяемых переменных и сложных условий, формирующих окончательный вид странички.

.3Главные серверные включения и их атрибуты

Ниже приведен список основных серверных включений (SSI) и их атрибутов:- задает по умолчанию сообщение, которое передается при обнаружении ошибки во время синтаксического анализа документа.

<!-- #config errmsg = " Error: file not found " -->

SIZEFMT - устанавливает формат, используемый при отображении размера файла. Допустимы значения - bytes или abbrev, которое округляет размер до ближайшего килобайта.

<!-- #config sizefmt = " abbrev " -->- устанавливает формат для времени и даты. Подробнее об этом я расскажу ниже.

<!-- #config timefmt = " %A, %B, %e, %Y " -->- значением является имя переменной, которую надо напечатать.

<!-- #echo var = " DATE_GMT " -->- указывает относительный URL-путь к сценарию CGI:are visitor number <!-- #exec cgi = " /cgi-bin/counter.pl " -->

CMD - задает любую команду на сервере. Переменные SSI доступны этой команде.

<!-- #exec cmd = " bin/finger $REMOTE_USER@$REMOTE_HOST " -->

FSIZE- задает месторасположение файла в виде пут, относительно каталога, в котором находится анализируемый документ.- задает путь url относительно текущего анализируемого документа. Если он не начинается со слэша (/), то считается относящимся к текущему документу.

The size of this file is <!-- #fsize file = " somefile.html " -->- задает месторасположение файла в виде пути, относительно каталога, в котором находится анализируемый документ.- задает путь url относительно текущего анализируемого документа. URL не может содержать схему или имя хоста, только путь. Если он не начинается со слэша (/), то считается относящимся к текущему документу.

This file was last modified on <!-- #flastmode virtual = " /mydocs/somefile.html " -->

INCLUDE- задает месторасположение файла в виде пути, относительно каталога, в котором находится анализируемый документ. То есть он не может содержать ../ или быть абсолютным. Предпочтение всегда следует отдавать атрибуту virtual.- задает путь url относительно анализируемого документа. URL не должен содержать схему или имя хоста. Если он не начинается со слеша (/), то считается относящимся к текущему документу.

<!-- #include virtual = " somefile.html " -->- используется только Apache версии 1.2 и выше. Элемент распечатывает список всех существующих переменных и их значения.

<!-- #ptintenv -->- имя устанавливаемой переменной.- значение, присваиваемое переменной.

<!-- #set var = " password " value = " mustard " -->

2. Механизм SSI

.1 Включение механизма Server-Side Includes

Любой документ, у которого будет установлен обработчик "server-parsed" будет сканироваться этим модулем, если включена опция "Includes". Если вы имеете малое количество документов с SSI, то лучше всего в файле httpd.conf указать следующее:

AddType text/html .shtml AddHandler server-parsed .shtml

и устанавливать у таких файлов расширение .shtml. Если же все или почти все документы будут иметь директивы SSI, то лучше в файле конфигурации указать:server-parsed .html

И не забудьте включить в опции директории узла опцию Includes:+Includes

Конечно, в этой строке могут быть и другие нужные вам опции.

.2 Базовые директивы

Директивы SSI включаются в HTML документ в виде комментариев (это не мешает вам использовать обычные комментарии). Синтаксис команд имеет следующий вид:

<!--#element attribute=value attribute=value ... -->

Очень часто значение помещается в двойные кавычки. Некоторые команды позволяют иметь только одну пару атрибут-значение. Обратите внимание, что заключительная часть комментария (-->) должна отделяться от директивы пробелом, иначе она будет воспринята, как ее часть.

Рассмотрим определенные в Apache элементы SSI:- контролирует различные аспекты сканирования. Его атрибутами могут быть:- устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;- устанавливает формат, в котором будет выводиться размер файла. Формат соответствует передаваемой библиотечной функции strftime;- устанавливает формат, в котором будет выводиться дата.- выводит значение установленной переменной SSI. Допустимым атрибутом является var.- выводит размер файла в определенном с помощью sizefmt формате.

Допустимые атрибуты:- определяет путь к файлу, относительно сканируемого документа;- определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) - относительно корня документов узла.- выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.- включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:- указывает путь, относительно сканируемого документа; путь не может содержать ../ и не может быть абсолютным путем; всегда предпочтительнее использовать атрибут virtual;- содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста, и может содержать строку запроса.- выводит содержимое переменных окружения. Вызывается без параметров.- устанавливает значение переменной. Ее атрибутами являются var, определяющий имя переменной, и value, определяющий ее значение.

.3 Переменные включения

В дополнение к стандартным окружениям CGI, модуль SSI делает доступными для директив и условий, а также для вызываемых через SSI сценариев следующие переменные:_GMT - текущее время по Гринвичу;_LOCAL - текущее локальное (для сервера) время;_NAME - имя файла (без каталогов) документа, запрошенного пользователем;_URI - декодированный URL запрошенного пользователем документа;_MODIFIED - дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя "главного" документа, а не вложенного.

.4 Подстановка переменных

Подстановка переменных производится внутри заключенных в кавычки строк в большинстве аргументов SSI директив. В этих случаях знак доллара можно вставить, предварив его слешем:

<!--#if expr="$a = \$test" -->

Для предотвращения двусмысленности можно заключать имя переменной в фигурные скобки:

<!--#set var="Zed" value="${a}bc_${abc}" -->

В результате такого присвоения переменная Zed будет иметь значение "Xbc_Y", если переменная a равна X, а переменная abc равна Y.

.5 Условные операторы

Базовыми элементами контроля являются:

<!--#if expr="test_condition" -->

<!--#elif expr="test_condition" -->

<!--#else -->

<!--#endif -->

Элементы elif и else являются необязательными.

Элемент endif заканчивает элемент if и является обязательным._condition может быть одним из следующих:

string - истинно, если string не пуста;

string1 = string2!= string2< string2<= string2> string2>= string2

- истинно, если выполняется условие сравнения. Если string2 имеет форму /string/, то тогда она интерпретируется, как регулярное выражение. Их синтаксис аналогичен синтаксису регулярных выражений в Unix команде egrep;

( test_condition ) - истинно, если test_condition истинно;

"=" и "!=" имеют больший приоритет, чем "&&" и "||", а "!" имеет наивысший приоритет.

Все, что не распознается, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то ее надо заключать в кавычки.

3. Практическое использование SSI

.1 Добавление разметки

Наиболее распространенным применением SSI является внедрение в документ некоего динамического куска разметки. Хрестоматийными примерами могут служить счетчики посещений, цитаты или баннеры рекламных сетей. В любом случае, будь то строка текста или целая таблица, вставка производится с помощью директивы include, помещаемой в то место, куда должен быть вставлен кусок разметки:

<html>

<body>

<p>Документ с баннером внизу страницы</p>

<!--#include virtual="/cgi-bin/ibanner.pl?webclub" -->

</body>

</html>

Программа или сценарий CGI, вставляемая с помощью SSI, ничем не отличается от стандартной CGI программы, за исключением того, что должен выдаваться не целый документ, а только кусок разметки.

Вот текст упомянутого выше сценария:

#!/usr/local/bin/perl

$login=$ENV{"QUERY_STRING"};"Content-type: text/html\n\n";

($IP)=($ENV{"REMOTE_ADDR"}=~s/\.//g);($$+$IP+time);

$seed=int rand(10000000);"<a href=\"#"justify">Как видно из примера даже во включаемых сценариях необходимо выводить HTTP заголовок.

В результате сканирования нашего простейшего документа пользователю будет возвращен примерно (с точностью до случайной величины) следующий документ:

<html>

<body>

<p>Документ с баннером внизу страницы</p>

<a href="#"justify"><img src="#"justify"></a>

</body>

</html>

.2 Формирование страницы из шаблона

Вторым распространенным применением SSI является формирование страницы из шаблона. В простейшем случае - это документ в начало и конец, которого вставляются шапка и концовка:

<html>

<head>

<title>Test Page</title>

</head>

<!--#include virtual="/ssi/header.html" -->

<h1>Тестовая страница</h1>

<p>Некий текст</p>

<!--#include virtual="/ssi/global_menu.html" -->

<!--#include virtual="/ssi/footer.html" -->

</body>

</html>

Вставляемые блоки не обязательно должны быть законченными, например, header.html может заканчиваться тэгом <td>, а global_menu.html или footer.html начинаться с тэга </td>. Таким образом, какими бы навороченными не были шапка и концовка документа, редактируемый документ выглядит чрезвычайно просто, и его легко редактировать.

В связи со всем вышесказанным рождается одно правило: желательно смысловую часть документа строить так, чтобы она никак не полагалась на содержимое шапок и концовок. В этом случае вы легко сможете перейти с табличной организации страниц на последовательную или на слоевую.

.3 Пример начального файла сервера

Далее приведен пример файла, вставляемого в начало каждого документа сервера <#"justify">1.Нильсен Якоб. Веб-дизайн, 2006.

2.Спейнауэр С., Экштейн Р. Справочник веб-мастера (2-е издание). - СПб.: Символ-Плюс, 2000.

3.Хилайер. С; Мизик Д. Программирование Active Server Pages, 1999.

.Джесси Рассел, Рональд Кон.SSI(Программирование).

5.Мейер Э.А. CSS-каскадные таблицы стилей. Подробное руководство,2008.

6.Джон Дакетт <#"justify">Приложение 1

<link rel=stylesheet type="text/css" href="/css/cf.css">

</head>

<!--#if expr="$DOCUMENT_URI=/\/internet\//" -->

<body bgcolor="#FFFFFF" link="#099771" vlink="#006741" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header2.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/database\//" -->

<body bgcolor="#FFFFFF" link="#719709" vlink="#416700" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header3.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/ofis\//" -->

<body bgcolor="#FFFFFF" link="#98650A" vlink="#683500" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header4.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/abtec\//" -->

<body bgcolor="#FFFFFF" link="#98340A" vlink="#680400" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header5.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/programming\//" -->

<body bgcolor="#FFFFFF" link="#099607" vlink="#006600" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header6.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/operating_systems\//" -->

<!--#elif expr="$DOCUMENT_URI=/\/abtec\//" -->

<body bgcolor="#FFFFFF" link="#98340A" vlink="#680400" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header5.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/ftp\//" -->

<body bgcolor="#FFFFFF" link="#970941" vlink="#670011" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<body bgcolor="#FFFFFF" link="#970941" vlink="#670011" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/finnews\//" -->

<body bgcolor="#FFFFFF" link="#970941" vlink="#670011" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/events\//" -->

<body bgcolor="#FFFFFF" link="#970941" vlink="#670011" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/lists\//" -->

<body bgcolor="#FFFFFF" link="#970941" vlink="#670011" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header8.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/hardware\//" -->

<body bgcolor="#FFFFFF" link="#950995" vlink="#650065" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header9.jpg" width="100%">

<!--#elif expr="$DOCUMENT_URI=/\/nets\//" -->

<body bgcolor="#FFFFFF" link="#390A98" vlink="#090068" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header10.jpg" width="100%">

<!--#else -->

<body bgcolor="#FFFFFF" link="#006890" vlink="#003860" alink="#800000" text="#000000">

<table cellspacing=0 cellpadding=0 border=0 background="/pictures/menu/header0.jpg" width="100%">

<!--#endif -->

<tr><td align="center">

<table cellspacing=0 cellpadding=4 border=0 width="100%" background="">

<tr><td align="left">

<img src="/pictures/menu/logo.gif" height=53 border=0 alt="Server for Information Technologies">

</td><td align="right">

<!--#include virtual="/cgi-bin/Look_new.cgi"-->

</td></tr>

</table>

<table cellspacing=0 cellpadding=4 border=0 width="100%" background="">

<tr valign=top><td align="left">

<font size="-1">Сервер содержит море(!) аналитической информации</font></td>

<td align="right">

<font size="-1"><a href="/rubricator/index.shtml">Рубрикатор всех документов CIT Forum</a></font></td>

</tr>

</table>

</td></tr>

</table>

Приложение 2

_head.html

<html><head>

<title>Web Club Repository. <!--#echo var="TITLE" --></title>

<meta http-equiv="Content-Type" content="text/html">

<meta http-equiv="author" content="Andrey G. Novikov + Andrew Yourtchenko">

<meta http-equiv="distribution" content="global">

<meta http-equiv="resource-type" content="document">

<meta name="keywords" content="WebClub, <!--#echo var="KEYWORDS" -->">

<meta name="description" content="WebClub. Кладовая. <!--#echo var="DESCRIPTION" -->">

<link rel="stylesheet" type="text/css" href="/webclub2.css">

</head>

<body text="#000000" bgcolor="#FFFFFF" link="#0000A8" vlink="#000040" alink="#FF0000">

<h1 align="center"><font color="#CCCCCC">&lt;h&gt;</font>КЛАДОВАЯ<font color="#CCCCCC">&lt;/h&gt;</font><br>

<img src="/images/bar.gif" height=19 border=0></h1>

<h2 align="center"><!--#echo var="TITLE" --></h2>

_item.html

<table cellspacing=0 cellpadding=3 border=0 width="100%"><tr><td bgcolor="#CCCCFF">

<b><!--#echo var="I_TITLE" --></b>

</td></tr></table>

<!--#if expr="$I_PIC" -->

<br>

<table cellspacing=1 cellpadding=3 border=1 align="right" bgcolor="#CCCCFF">

<tr><td align="center" valign="middle">

<img src="<!--#echo var="I_PIC" -->" width="<!--#echo var="I_PIC_W" -->"="<!--#echo var="I_PIC_H" -->" border=0>

</td></tr></table>

<!--#endif -->

<p>

<!--#if expr="$I_SITE" -->

<b>Узел поддержки</b>:<a href="<!--#echo var="I_SITE" -->"><!--#echo var="I_SITE" --></a><br>

<!--#endif -->

<b>Домашняя страница</b>:<a href="<!--#echo var="I_PAGE" -->"><!--#echo var="I_PAGE" --></a><br>

<!--#endif -->

<!--#if expr="$I_ARCHIVE" -->

<b>Она сама</b>:<a href="<!--#echo var="I_ARCHIVE" -->"><!--#echo var="I_ARCHIVE" --></a><br>

<!--#endif -->

<!--#if expr="$I_LOCALARCHIVE" -->

<b>Она сама у нас</b>: <a href="<!--#echo var="I_LOCALARCHIVE" -->"><!--#echo var="I_LOCALARCHIVE" --></a><br>

<!--#endif -->

<!--#if expr="$I_PLATFORM" -->

<b>Платформа</b>: <!--#echo var="I_PLATFORM" --><br>

<!--#endif -->

<!--#if expr="$I_STATUS" -->

<b>Статус</b>: <!--#echo var="I_STATUS" --><br>

<!--#endif -->

</p>

<p align="justify">

<!--#if expr="$I_DESCRIPTION" -->

<!--#echo var="I_DESCRIPTION" -->

<!--#else -->description.

<!--#endif -->

</p>

<br clear="right"><br>

_foot.html

<!--#include virtual="/materials/banfooter.html"-->

</body>

</html>

Похожие работы на - Изучение преимуществ технологии Server Side Includes

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!