ru en uk

  авторизация

(044) 362 48 16   (098) 294 41 60


   Цены

Home   |   WEB development   |   Articles   |   Other topics

Что такое SSI


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


В стандартном дистрибутиве Apache есть модуль mod_include. Начиная с версии 1.2 он имеет расширенное количество директив и называется - XSSI (eXtended SSI). По умолчанию он включен в компиляцию.

Включение механизма Server-Side Includes


Любой документ, у которого будет установлен обработчик "server-parsed" будет сканироваться этим модулем, если включена опция "Includes". Если вы имеете малое количество документов с SSI, то лучше всего в файле httpd.conf указать следующее:

AddType text/html .shtml

AddHandler server-parsed .shtml


и устанавливать у таких файлов расширение .shtml. Если же все или почти все документы будут иметь директивы SSI, то лучше в файле конфигурации указать:

AddHandler server-parsed .html


И не забудьте включить в опции директории узла (Directory, Virtual, .htaccess) опцию Includes:

Options +Includes


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

Базовые директивы


Директивы SSI включаются в HTML документ в виде комментариев (это не мешает вам использовать обычные комментарии). Синтакс команд имеет следующий вид:


Очень часто значение помещается в двойные кавычки. Некоторые команды позволяют иметь только одну пару атрибут-значение. Обратите внимание, что заключительная часть комментария (-->) должна отделяться от директивы пробелом, иначе она будет воспринята, как ее часть.

Рассмотрим определенные в Apache элементы SSI:


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

    1. errmsg - устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;
      Это стандартная ошибка при запуске скрипта, которого нет:

      А теперь заменим сообщение об ошибке и повторим:



      Вывод:
      Это стандартная ошибка, возникающая при запуске скрипта, которого нет:
      [an error occurred while processing this directive]
      А теперь заменим сообщение об ошибке и повторим:
      Ошибка, пишите автору ошибки

    2. sizefmt - устанавливает формат, в котором будет выводиться размер файла. Формат соответствует передаваемому библиотечной функции strftime; Директива config sizefmt изменяет формат вывода размера файла.
      Размер файла этой страницы в килобайтах:



      Размер файла этой страницы в байтах:



      Вывод:
      Размер файла этой страницы в килобайтах: 12k
      Размер файла этой страницы в байтах: 12,463

    3. timefmt - меняет формат вывода даты и времени.
      Время модификации файла этой страницы в секундах с 01.01.1970:



      Время модификации файла этой страницы в читабельном виде:




      Вывод:
      Время модификации файла этой страницы в секундах с 01.01.1970: 961590693
      Время модификации файла этой страницы в читабельном виде: 21.06.2000 16:31:33


    Параметры, используемые в config timefmt:





















    Формат Описание Пример
    %a Аббревиатура названия дня недели Sun
    %A Полное название дня недели Sunday
    %b Аббревиатура названия месяца Jan
    %B Полное название месяца January
    %d День месяца 01 (не 1)
    %D Дата в формате "%m/%d/%y" 01/31/90
    %e День месяца 1
    %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 Неделя года 49
    %w Номер дня недели 5
    %y Год в формате ГГ 95
    %Y Год в формате ГГГГ 1995
    %Z Временная зона MSK


  • echo - выводит значение установленной переменной SSI. Допустимым атрибутом является var.
    Твой IP -

    Твой броузер -

    Мой сервер -

    Ты пришел со страницы -


  • fsize - выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:
  • file - определяет путь к файлу, относительно сканируемого документа;
  • virtual - определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) - относительно корня документов узла.
  • flastmod - выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.
  • include - включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

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

  • printenv - выводит содержимое переменных окружения. Вызывается без параметров.
  • set - устанавливает значение переменной. Ее атрибутами являются var, определяющий имя переменной, и value, определяющий ее значение.

 

Переменные включения


В дополнение к стандартным окружения CGI, модуль SSI делает доступными для директив и условий, а также для вызываемых через SSI сценариев следующие переменные:


  • DATE_GMT - текущее время по Гринвичу;
  • DATE_LOCAL - текущее локальное (для сервера) время;
  • DOCUMENT_NAME - имя файла (без каталогов) документа, запрошенного пользователем;
  • DOCUMENT_URI - декодированный URL запрошенного пользователем документа;
  • LAST_MODIFIED - дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя "главного" документа, а не вложенного.

 

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


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


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


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

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


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





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


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


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


  • string - истинно, если string не пуста;
  • string1 = string2
  • string1 != string2
  • string1 < string2
  • string1 <= string2
  • string1 > string2
  • string1 >= string2


- истинно, если выполняется условие сравнения. Если 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 истинно.
  • "=" и "!=" имеют больший приоритет, чем "&&" и "||", а "!" имеет наивысший приоритет.


Все, что не распознается, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то ее надо заключать в кавычки. Наша студия реализовывает создание сайта Харьков различной сложности.


 
Работа с базами данных
29.05.2007
Постраничный вывод результата
29.05.2007
Как отослать почту
29.05.2007