Меню сайта
  Главная
  Гостевая
  Друзья
  Баннеры
  Учебники
  Программы
  Шаблоны
  Шрифты
  Фоны
  Смайлы
  Ссылки
  ICQ-Магазин
Партнеры
Яндекс цитирования
 
 
SSI

SSI. Включения на стороне сервера.

Технология SSI (Server Side Includes, включения на стороне сервера) является простым, но в то же время, мощным инструментом для создания динамических сайтов. Многие веб мастера рано или поздно сталкиваются с проблемой создания многостраничных сайтов. Технология SSI позволяет решить эту проблему собирая страницу из заранее подготовленных кусочков. Кроме того, SSI позволяет вставлять в текст HTML документа результат выполнения SGI скриптов.

Инструкции SSI обрабатываются на стороне сервера, поэтому прежде чем использовать инструкции SSI необходимо сконфигурировать сервер. Страницы с использованием инструкций SSI приводят к значительной нагрузки на сервер, поэтому обработка страницы с SSI включается при запросе страницы с определенным расширением (обычно, *.shtml). Это делается добавлением в файл httpd.conf строк

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

Конечно же, вы можете задать для страниц обрабатываемых сервером расширение *.html. Это будет удобно, если инструкции SSI используются на значительном количестве страниц сайта. Дополнительно нужно включить в конфигурационном файле опцию Options +Includes.

Директивы SSI включаются в HTML документ в виде комментариев:

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

В отличии от обычного коментария, директивы SSI содержат обязательный символ #, который говорил обработчику о том, что здесь находится исполняемый код. Перед закрытием комментария (-->) обязательно должен стоять пробел, иначе он будет воспринят как часть кода. Можно указывать несколько пар attribute=value. Значение (value) можно помещать в двойные кавычки.

 

Директивы SSI

Приведем список основных директив (инструкций) SSI.

#config errmsg
Задает текст сообщения об ошибке. Этот текст выводится на страницу, когда происходит ошибка запуска скрипта, синтаксическая ошибка директивы SSI, запрашивается не существующий файл. По умолчанию выводится текст: "[an error occurred while processing this directive]". Пример:
<!--#config errmsg="В ходе выполения директивы произошла ошибка" -->
Этот пример при возникновении ошибки выводит соответствующее сообщение.
#config sizefmt
Эта директива определяет формат выдачи размера файла (в байтах или в аббревиатуре байтов, килобайтов или мегабайтов). Используется вместе с директивой определения размера файла #fsize file. Пример:
Size of file.txt:
<!--#config sizefmt="abbrev" -->
<!--#fsize file="file.txt" -->
<!--#config sizefmt="bytes" -->
(<!--#fsize file="file.txt" -->)
Этот пример выводит сообщение в виде: Size of file.txt: 37K (38,249)
#config timefmt
Определяет формат выдачи даты последнего обновления файла (команда #flastmod file). Пример:
<!--#config timefmt="%d.%m.%Y %T" -->
Last modified:
<!--#flastmod file="file.txt" -->
Эти директивы выводят дату последнего изменения файла file.txt в виде: Last modified: 05.04.2005 15:11:13. Подробнее о всех видах формата времени описано здесь.
#exec cgi
Эта директива запускает указанный скрипт и вставляет в документ текст выдачи скрипта. Пример:
<!--exec cgi="cgi-bin/script.cgi" -->
#exec cmd
Запускает команду и вставляет в документ текст выдачи этой команды. Пример:
<!--exec cmd="date.txt" -->
#flastmod file
Выводит дату последнего изменения файла. Формат даты определяется инструкцией #config datefmt. Пример:
Last modified:
<!--#flastmod file="file.txt" -->
Этот пример выводит строчку вида: Last modified: Tuesday, 05-Apr-2005 15:11:13.
#fsize file
Выводит размер файла. Формат значения (в байтах или килобайтах) задается инструкцией #config sizefmt. Можно указывать путь к файлу. Пример:
<!--#fsize file="src/file.txt" -->
Этот код выводит размер файла file.txt.
#include file
Вставляет файл из текущей директории. Пример:
<!--#include file="file.txt" -->
Загрузка содержимое файла file.txt.
#include virtual
Эта команда позволяет вставлять файл из другой папки. Пример:
<!--#include virtual="src/file.txt" -->
Этот код вставляет содержимое файла file.txt из директории src. Указываются относительные пути к файлу.
#printenv
Выводит названия и значения всех переменных окружения (environment variable). Пример:
<!--#printenv -->

Операторы

Рассмотрим возможности SSI как скриптового языка.

Переменные. Присвоение значений переменным в SSI осуществляется с помощью команды #set var value:

<!--#set var="msg" value="Hallo " -->

Вывести значение переменной можно с помощью #echo var:

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

В качестве переменных можно использовать переменные окружения. При подстановке значения переменной внутри директив SSI перед именем переменной необходимо ставить символ $ (доллар). Для предотворащения двумысленности можно заключить имя переменной в фигурные скобки {}. Например, <!--#set var="msg2" value="${msg} World!" --> присвоит переменной msg2 значение "Hallo World!". Следующий пример отображает некоторую информацию по текущей странице:

Информация о текущей странице.
Адрес:
http://<!--#echo var="HTTP_HOST" --><!--#echo var="REQUEST_URI" -->
Размер файла:
<!--#fsize file="$DOCUMENT_NAME" -->
Дата обновления:
<!--#flastmod file="$DOCUMENT_NAME" -->

Условные операторы. Базовой структурой для описания условного оператора является:

<!--#if expr="condition" -->
<!--#elif expr="condition" -->
<!--#else -->
<!--#endif -->

Элементы #elif и #else не являются обязательными. Условие condition могут быть следующими: сравнение str1 = str2 (равно), str1 != str2 (не равно), str1 < str2 (меньше), str1 > str2 (больше), str1 <= str2 (меньше или равно), str1 >= str2 (больше или равно); str (истинно, если str не пустая строка). Если str2 записано в виде /str/, то строка интерпретируется как регулярное выражение. Также можно использовать логические отношения: && (логическое И), || (логическое ИЛИ), ! (логическое отрицание).

Продемонстрируем использование условных операторов на примере определения браузера пользователя:

Ваш браузер
<!--#if expr="$HTTP_USER_AGENT=/Opera/" -->
Opera
<!--#elif expr="$HTTP_USER_AGENT=/MSIE/" -->
Microsoft Internet Explorer
<!--#elif expr="$HTTP_USER_AGENT=/Netscape/" -->
Netscape
<!--#elif expr="$HTTP_USER_AGENT=/Firefox/" -->
Firefox
<!--#else -->
не определен.
<!--#endif -->

 

 

 

 
Новости сайта
На сайте обновился дизайн и появиль новые

 
Сайт создан в системе uCoz