Server Side Includes

Server Side Includes

SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного веб-сервере Apache при помощи модуля mod_include. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml, .stm или .shtm

Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние

Отдельные элементы синтаксиса SSI используются и в других скриптовых языках, например в ASP.

Содержание

Основные команды SSI

  • config — устанавливает формат сообщений об ошибках, дат и размера
  • set — устанавливает значение переменной
  • printenv — выводит список переменных окружения
  • echo — вставляет значение переменной
  • flastmod — вставляет дату и время изменения файла
  • fsize — вставляет размер файла
  • include — вставляет содержимое другого файла
  • if, elif, else, endif — условные операторы

Описание

config — контролирует различные аспекты сканирования. Его атрибутами могут быть:

  • errmsg — устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;
  • sizefmt — устанавливает формат, в котором будет выводиться размер файла. Формат соответствует передаваемому библиотечной функции strftime;
  • timefmt — устанавливает формат, в котором будет выводиться дата.

Переменные для sizefmt:

<!--#config sizefmt="abbrev"--> Выводит размер файла в килобайтах: (17k)
<!--#config sizefmt="bytes"--> Выводит размер файла в байтах (17,076)

Переменные для timefmt:

Формат Описание Пример
 %a Краткое название дня недели Mon
 %A Полное название дня недели Monday
 %b Аббревиатура названия месяца Dec
 %B Полное название месяца December
 %d День месяца 01 (не 1)
 %D Дата в формате "%m/%d/%y" 12/31/99
 %e День месяца 13
 %H Часы в 24-часовом формате 13
 %I Часы в 12-часовом формате 01
 %j День года 235
 %m Номер месяца 01
 %M Минуты 03
 %p AM/PM (до полудня/после) AM
 %r Время в формате "I:M:S p" 11:35:46 PM
 %S Секунды 34
 %s Время в секундах с 01.01.1970 957228726
 %T Время в формате "%H:%M:%S" 14:05:34
 %U Неделя года 16
 %w Номер дня недели 4
 %y Год в формате ГГ 99
 %Y Год в формате ГГГГ 1999
 %Z Временная зона MSK

Обратите внимание на то, что команды #config sizefmt и #config timefmt влияют на все связанные с ними SSI-команды от того места, откуда они были вызваны и до самого конца страницы. Поэтому каждый вызов команд #flastmod и #fsize лучше снабжать своей командой #config.

set — устанавливает значение переменной. Ее атрибутами являются var, определяющий имя переменной, и value, определяющий ее значение.

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

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

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

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

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

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

printenv — Выводит список так называемых «переменных окружения» («environment variables») с их значениями. Вызывается без параметров. В их числе переменные:

  • DOCUMENT_ROOT (название основной папки для вебстраниц на сервере, обычно ваша папка public_html и путь к ней)
  • HTTP_USER_AGENT (название браузера, которым пользуется посетитель)
  • REMOTE_ADDR (IP-адрес посетителя)
  • REMOTE_HOST (адрес посетителя в нормальной форме — например, adsl53.peterlink.ru)
  • SERVER_ADDR (IP-адрес вашего сайта)
  • SERVER_NAME и HTTP_HOST (адрес сервера, типа userguide.webservis.ru),
  • DOCUMENT_URI, REQUEST_URI и SCRIPT_NAME (запрошенная вами страница, типа /examples/mysqlexample.shtml.),
  • DOCUMENT_NAME (имя файла (без каталогов) документа, запрошенного пользователем),
  • SCRIPT_FILENAME (полный путь к вебстранице на сервере. Например /home/home-webservis/public_html/ и так далее),
  • SERVER_SOFTWARE (название сервера, например, Apache/1.3.2 (Unix))
  • SERVER_ADMIN (почтовый адрес владельца сервера, указанный при установке),
  • DATE_LOCAL (сегодняшниее время и дата в вашем часовом поясе(для сервера)),
  • DATE_GMT (текущее время по Гринвичу),
  • LAST_MODIFIED (дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя «главного» документа, а не вложенного).

echo — выводит значение установленной переменной SSI. Допустимые атрибуты:

flastmod — выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.

fsize — выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:

  • file — определяет путь к файлу, относительно сканируемого документа;
  • virtual — определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) — относительно корня документов узла.

include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

  • file — указывает путь, относительно сканируемого документа; путь не может содержать ../ и не может быть абсолютным путем; всегда предпочтительнее использовать атрибут virtual;
  • virtual — содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста, и может содержать строку запроса.

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

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

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

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

Элемент endif заканчивает элемент if и является обязательным.

test_condition может быть одним из следующих:

  • string — истинно, если string не пуста;
  • string1 = string2
  • string1 != string2
  • string1 < string2
  • string1 <= string2
  • string1 > string2
  • string1 >= string2
  • всё вышеперечисленное истинно, если выполняется условие сравнения;
  • string1 ~ string2 — истинно, если string1 содержит в себе string2;
  • string1 =~ /string2/ — истинно, если string1 содержит в себе string2, а string2 — регулярное выражение Unix (см. ниже).

Если string2 имеет форму /string/, то тогда она интерпретируется, как регулятное выражение. Их синтаксис аналогичен синтаксису регулярных выражений в Unix команде egrep;(см. Регулярные выражения)
(test_condition) — истинно, если test_condition истинно;
! test_condition — истинно, если test_condition ложно;
test_condition1 && test_condition2 — истинно, если как test_condition1, так и test_condition2 истинны;
test_condition1 || test_condition2 — истинно, если хотя бы test_condition1 или test_condition2 истинно.
«=" и "!=" имеют больший приоритет, чем "&&» и «||», а «!» имеет наивысший приоритет.

Все, что не распознается, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то ее надо заключать в кавычки.
О чём стоит помнить, так это о том, что лучше не использовать SSI-команды при создании страниц в редакторах типа Front Page — они их обычно не понимают и выкидывают, и о том, что одну SSI-команду нельзя вызвать из другой (как нельзя вызвать SSI-команду из скрипта, и скрипт из скрипта).

Примеры

Задание сообщения обработчика ошибок

<!--#config errmsg="[При открытии страницы произошла ошибка. Пожалуйста, сообщите об этом владельцу сайта.]" -->

Задание формата вывода даты и времени

<!--#config timefmt="%d/%m/%y" -->           Выведет:  03/07/06
<!--#config timefmt="%d/%m/%Y, %H:%M:%S" --> Выведет:  03/07/2006, 20:16:33

Задание переменных

http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> 

Выведет: 
http://ru.wikipedia.org/w/index.php?title=SSI&action=edit&section=5

Вставка даты модификации файла

<!--#flastmod file="file.html" -->

Вставка содержимого файла

<!--#include file="footer.html" -->
<!--#include virtual="header.asp" -->
<!--#include virtual="/right.links.txt" --> 

Проверка условия

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



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Server Side Includes" в других словарях:

  • Server Side Includes — (SSI) is a simple interpreted server side scripting language used almost exclusively for the Web. The most frequent use of SSI is to include the contents of one or more files into a web page on a web server. For example, a web page containing a… …   Wikipedia

  • Server Side Includes — (dt.: Serverseitige Einbindungen), auch bekannt als SSI, sind in (meist HTML )Dokumente eingebettete, einfach zu nutzende Scriptbefehle, die auf dem Webserver ausgeführt werden, bevor das Dokument an den Client ausgeliefert wird. Sie stellen eine …   Deutsch Wikipedia

  • Server side includes — Les Server Side Includes, abrégés SSI, sont un langage de programmation fait pour être interprété par un serveur HTTP lorsqu il sert un document HTML. Ce langage tire son nom de sa principale utilisation : inclure plusieurs fichiers pour… …   Wikipédia en Français

  • Server Side Includes — (SSI) es un conjunto de directivas que se escriben en las páginas HTML y que se evalúan en el servidor web cuando se solicita la página HTML. SSI permite añadir contenido generado de forma dinámica a las páginas web, sin tener que programar toda… …   Wikipedia Español

  • Server Side Includes — Les Server Side Includes, abrégés SSI, sont un langage de programmation fait pour être interprété par un serveur HTTP lorsqu il sert un document HTML. Ce langage tire son nom de sa principale utilisation : inclure plusieurs fichiers pour… …   Wikipédia en Français

  • Server Side Includes (программирование) — SSI (Server Side Includes включения на стороне сервера) несложный язык для динамической «сборки» веб страниц на сервере из отдельных составных частей и выдачи клиенту полученного веб сервере Apache при помощи модуля mod include. Включённая в… …   Википедия

  • Server Side Includes — Abk. SSI . Webserver Erweiterung, die es erlaubt, Webseiten dynamisch zu generieren bzw. zu modifizieren. Vor Auslieferung einer Webseite an einen Browser Client werden darin enthaltene Befehle ausgeführt. So können z.B. der Inhalt einer externen …   SEO Wörterbuch

  • Server-side — refers to operations that are performed by the server in a client server relationship in computer networking.Typically, a server is a software program, such as a web server, that runs on a remote server, reachable from a user s local computer or… …   Wikipedia

  • Server\ Side\ Include — Ermöglichen das Auslagern von gleichbleibenden Webseiteninhalten auf eigene Files. Mit Server Side Includes (SSI) können Variablen definiert werden, die beim Aufruf vom Server dynamisch mit aktuellen Inhalten beliefert werden, beispielsweise die… …   Online-Wörterbuch Deutsch-Lexikon

  • Server Side Include (программирование) — SSI (Server Side Includes включения на стороне сервера) несложный язык для динамической «сборки» веб страниц на сервере из отдельных составных частей и выдачи клиенту полученного веб сервере Apache при помощи модуля mod include. Включённая в… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»