Интернет магазин китайских планшетных компьютеров



Компьютеры - SSI (программирование) - Основные команды SSI

19 февраля 2011


Оглавление:
1. SSI (программирование)
2. Основные команды SSI
3. Примеры



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

Описание

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

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

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

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

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

Формат Описание Пример
 %a Краткое название дня недели Mon
 %A Полное название дня недели Monday
 %b Аббревиатура названия месяца Dec
 %B Полное название месяца December
 %d День месяца 01
 %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 — Выводит список так называемых «переменных окружения» с их значениями. Вызывается без параметров.

Переменные окружения:

  • DOCUMENT_ROOT
  • USER_AGENT и HTTP_USER_AGENT
  • REMOTE_ADDR
  • REMOTE_HOST
  • SERVER_ADDR
  • SERVER_NAME и HTTP_HOST,
  • DOCUMENT_URI, REQUEST_URI и SCRIPT_NAME,
  • DOCUMENT_NAME документа, запрошенного пользователем),
  • SCRIPT_FILENAME,
  • SERVER_SOFTWARE)
  • SERVER_ADMIN,
  • DATE_LOCAL),
  • DATE_GMT,
  • LAST_MODIFIED.
  • HTTP_COOKIE.

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

  • var — имя выводимой переменной;
  • encoding — перекодировка значения переменной перед выводом. Действует в версиях Apache 1.3.12 и выше. В версиях Apache 2.2.6 и выше по умолчанию символы кодируются в windows-1252 из-за чего ssi переменные окружения с русскими сиволами при отображении в документе портятся и выглядят как кракозябры, во избежание этого всегда указывайте encoding="none". Обратите внимание, что будучи заданным, этот атрибут должен предшествовать атрибуту var. Варианты значений атрибута encoding:
    • entity — будет произведено преобразование специальных HTML-символов в сущности;
    • url — будет произведено т.н. %-преобразование, то есть пригодное для указание в строке URL;
    • none — не будет производиться никаких преобразований.

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

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

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

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

  • 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_condition1 && test_condition2 — истинно, если как test_condition1, так и test_condition2 истинны;
test_condition1 || test_condition2 — истинно, если хотя бы test_condition1 или test_condition2 истинно.
«=" и "!=" имеют больший приоритет, чем "&&» и «||», а «!» имеет наивысший приоритет.

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



Просмотров: 2771


<<< TinyButStrong