Автоматное программирование
- 1 year ago
- 0
- 0
SSI
(
Server Side Includes
— включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного
HTML
-документа. Реализован в
веб-сервере
Apache
при помощи модуля
. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться
расширением
.shtml
,
.stm
или
.shtm
Необходимо помнить, что некоторые сервисы не исполняют команды SSI, если расширение файла будет отличным от приведённых выше, например,
.html
.
Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние CGI -скрипты, реализовывать условные операции (if/else), работать с переменными и т. п. Благодаря крайней простоте языка сборка SSI-страниц происходит очень быстро, однако, многие возможности полноценных языков программирования, например, работа с файлами, в SSI отсутствуют.
Отдельные элементы синтаксиса SSI используются и в других скриптовых языках , например в ASP .
|
Статья содержит инструкцию (руководство).
|
config — контролирует различные аспекты сканирования. Его атрибутами могут быть:
Переменные для 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 — Выводит список так называемых « переменных окружения » с их значениями. Вызывается без параметров.
Переменные окружения:
echo — выводит значение установленной переменной SSI. Допустимые атрибуты:
flastmod — выводит дату последней модификации файла в определённом с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.
fsize — выводит размер файла в определённом с помощью sizefmt формате. Допустимые атрибуты:
include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:
Базовыми элементами контроля являются:
<!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif -->
Элементы elif и else являются необязательными.
Элемент endif заканчивает элемент if и является обязательным.
test_condition может быть одним из следующих:
Если 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_(программирование)
<!--#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-->