UR4QTP: записная книжка 

На главную

Шпаргалки

Шпаргалка по SSI

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


SSI (Server Side Includes, включения на стороне сервера) – простой язык для динамической сборки html-страниц на стороне сервера. SSI позволяет включать в текст выдаваемой страницы содержимое других файлов, переменных окружения, результаты выполнения сценариев и команд, использовать условия. Однако полноценная работа с файловой системой недоступна. Директивы SSI, вставленные как определённого вида комментарии в html-разметку, передают указания веб-серверу.

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

SSI-директивы не должны быть вложены одна в другую, не должны вызываться из сценария. Один сценарий таким образом посредством SSI не может вызывать другой сценарий.

Об использовании SSI совместно с Lighttpd можно посмотреть здесь.

Директивы SSI

Директивы должны иметь такой вид:

<!--#директива параметр="значение" -->

Если параметров несколько, то они указываются последовательно через пробел парами параметр="значение":

<!--#директива параметр1="значение1" параметр2="значение2" -->

Между символами <!--#, так же как и между символами --> не должно быть пробелов. Название директивы после символа # тоже должно идти без пробела. Перед --> пробел должен быть.



Include

Эта директива позволяет включать в текст выдаваемой страницы содержимое указанного в директиве файла.

<!--#include virtual="путь (URL)" -->

<!--#include file="путь (URL)" -->

При использовании параметра virtual путь к файлу может быть как относительным, так и абсолютным (от корневого каталога сайта насервере), без имени протокола или имени компьютера, но возможно со строкой запроса. Зачем нужен параметр file, мне не понятно, поскольку он должен указывать на относительный путь, но не может содержать ссылку на родительский или корневой каталог, и никаких преимуществ по сравнению с virtual не имеет.

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



Exec

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

<!--#exec cmd="команда" -->

<!--#exec cgi="путь (URL)" -->

Команда (это любая команда на сервере) выполняется в локальной оболочке и имеет доступ к переменным окружения SSI. Путь к сценарию должен быть относительным.



Echo

Эта директива служит для вывода значения указанной в качестве параметра переменной окружения.

<!--#echo var="имя" -->



Set

Эта директива служит для установки (присваивания) значения переменной. Директива имеет два параметра: имя переменной и её значение.

<!--#set var="имя" value="значение" -->

Если нужно использовать значение переменной, а не её имя, то перед именем переменной нужно поставить $, т. е. аналогично с использованием переменной в bash.



Printenv

Эта директива служит для вывода значений всех переменных окружения.

<!--#printenv -->

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

Список переменных окружения:



Config

Эта директива устанавливает формат сообщений. Однажды установленный формат будет действовать до тех пор, пока не будет переопределён другой директивой config.


<!--#config sizefmt="bytes" -->

<!--#config sizefmt="abbrev" -->

Директива определяет, каким образом будет выводиться размер файла директивой fsize. Параметр sizefmt может принимать два значения:


<!--#config timefmt="образец" -->

Директива определяет, каким образом будет выводиться время и дата директивой flastmod. Образец может содержать как текст, так и некоторые шаблоны:


<!--#config errmsg="сообщение" -->

Таким образом можно предопределить, как будут выводиться сообщения об ошибках. Не худший вариант – оставить сообщение пустым, хотя это и может затруднить поиск ошибок. По умолчанию выводится сообщение:

[an error occurred while processing this directive]



Flastmod

Эта директива предназначена для выдачи даты последней модификации указанного в качестве параметра файла.

<!--#flastmod virtual="путь (URL)" -->

<!--#flastmod file="путь (URL)" -->

Параметры аналогичны директиве include. Формат выдачи может быть предварительно определён директивой config timefmt.



Fsize

Эта директива предназначена для выдачи размера указанного в качестве параметра файла.

<!--#fsize virtual="путь (URL)" -->

<!--#fsize file="путь (URL)" -->

Параметры аналогичны директиве include. Формат выдачи может быть предварительно определён директивой config sizefmt.



If – elif – else – endif

Эти директивы предназначены для условного выполнения других директив.

<!--#if expr="условие1" -->

<!--#elif expr="условие2" -->

<!--#else -->

<!--#endif -->

Обязательными элементами являются if и endif, elif и else могут отсутствовать.

Если условие1 истинно, выполняется html-код между директивой if и следующей за ней директивой (elif, else или endif).

Если условие1 ложно, а условие2 истинно, выполняется html-код между директивой elif и следующей за ней директивой (else или endif).

Если условие2 также ложно, выполняется html-код между директивой else и endif (если else присутствует), или не выполняется ничего (если else нет).


Условие представляет собой одну строку (пустую или нет), либо набор строк, связанных операторами сравнения. Условие истинно, если истинно высказывание:

  1. (условие) истинно, если условие истинно;
  2. !условие истинно, если условие ложно;
  3. Условие1 && условие2 истинно, если оба условия истинны;
  4. Условие1 || условие2 истинно, если хотя бы одно условие истинно.

Операторы в порядке убывания приоритетов:

  1. !
  2. =, !=
  3. &&, ||

Скобки могут использоваться для группировки.



Шпаргалки

На главную

 UR4QTP: записная книжка