Четверг, 23-Ноябрь-2017, 4.57 AM

Dletemplate.ru

Категории раздела
Наш опрос
Сколько тебе лет?
Всего ответов: 347
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Статьи

Главная » Статьи » SSI

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

SSI работает очень просто: при получении запроса на документ, содержащий SSI-директивы, http-сервер обрабатывает документ, выполняет все SSI-директивы, а получившийся в результате документ возвращает клиенту. Http-сервер не проверяет автоматически все документы на наличие SSI-директив, а только те, которые относятся к типу, указанному в настройках сервера.

Для указания http-серверу, какие документы считать содержащими SSI-директивы, в srm.conf, находящемся в /etc/httpd/conf надо раскомментировать следующие строки:

AddType text/html .shtml
AddHandler server-parsed .shtml


После этого все документы с расширением .shtml будут проверяться на SSI-директивы. Но удобнее будет определить чтобы все .html-файлы могли содержать SSI. Это делается добавление в srm.conf следующих строчек:

AddType text/html .html # не обязательно, т.к. он и так описан.
AddHandler server-parsed .html


Теперь надо разрешить выполнение SSI в каталоге, в котором лежат твои файла. Найди в access.conf описание каталога, в котором лежат твои html'ы и добавь в его Options директиву Includes:

#было так
Options Indexes
#стало так
Options Indexes Includes


Если твой каталог не прописан, его надо прописать. Почитай доку по Apache, чтоб узнать как это делается.:) А если у тебя нет возможности изменять srm.conf или access.conf, т.е. ты не root, тогда за пивом, а потом к админу.:)

SSI-директивы включаются в html-код в виде коментариев, но определенного формата:

<!--#SSI_директива="параметры" -->


Использовать можно следующие SSI-директивы:

  • echo var
    Используется для вывода значения переменной окружения.

    Твой IP - <!--#echo var="REMOTE_ADDR"--> <BR>
    Твой броузер - <!--#echo var="HTTP_USER_AGENT"--> <BR>
    Мой сервер - <!--#echo var="SERVER_NAME"--> <BR>
    Ты пришел со страницы - <!--#echo var="HTTP_REFERER"--> <BR>


    А вот вывод:

    Твой IP - 213.59.136.10
    Твой броузер - Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
    Мой сервер - www.citforum.ru
    Ты пришел со страницы - http://vakh.online.com.ua/promo/library/index.html

  • include file
    include file
    Включает в html-файл в месте, где идет вызов SSI, содержимое указанного файла. Отличие include file от include virtual в том, что в первом случает используется файл, находящийся в том же каталоге, что и html-файл, во втором случает указывается путь к файлу относительно текущего каталога. Если с помощью include file или include virtual включается cgi-скрипт, то в содержимое страницы попадет вывод cgi-скрипта, а не его содержание.
  • fsize file
    Вставляет размер указанного файла.

    Размер файла этой страницы:
    <!--#fsize file="ssi.shtml"--> <BR>


    Вывод:

    Размер файла этой страницы: 12k

  • flastmod file
    Вставляет время последней модификации указанного файла.

    Время последней модификации файла этой страницы:
    <!--#flastmod file="ssi.shtml"--> <BR>


    Вывод:

    Время последней модификации файла этой страницы: Wednesday, 21-Jun-2000 16:31:33 MSD

  • exec cmd
    exec cgi
    Запускает внешнюю программу (exec cmd) или cgi-скрипт (exec cgi) и вставляет в содержимое страницы вывод.
  • config errmsg
    config sizefmt
    config timefmt
    Изменяет различный параметры конфигурации SSI.
    config errmsg
    Изменяет стандартное собщение об ошибке на введенное пользователем. Сообщение об ошибке возникает при неправильном выполнении SSI-директивы, например при отсутствии cgi-скрипта, который ты пытаешься запустить.

    Это стандартная ошибка при запуске скрипта, которого нет:<BR>
    <!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR>
    А теперь заменим сообщение об ошибке и повторим: <BR>
    <!--#config errmsg="Ошибка, пишите <a href=mailto:dh@null.ru>автору ошибки</a>"-->
    <!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR>


    Вывод:

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


    Директива config sizefmt изменяет формат вывода размера файла.

    Размер файла этой страницы в килобайтах:
    <!--#config sizefmt="abbrev"-->
    <!--#fsize file="ssi.shtml"--> <BR>
    Размер файла этой страницы в байтах:
    <!--#config sizefmt="bytes"-->
    <!--#fsize file="ssi.shtml"--> <BR>


    Вывод:

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


    Директива config timefmt меняет формат вывода даты и времени.

    Время модификации файла этой страницы в секундах с 01.01.1970:
    <!--#config timefmt="%s"-->
    <!--#flastmod file="ssi.shtml"--> <BR>
    Время модификации файла этой страницы в читабельном виде:
    <!--#config timefmt="%d.%m.%Y %H:%M:%S"-->
    <!--#flastmod file="ssi.shtml"--> <BR>


    Вывод:

    Время модификации файла этой страницы в секундах с 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
  • printenv
    Выводит все переменные окружения. Параметров не имеет.

    Список переменных окружения:<BR>
    <!--#printenv -->


    Вывод:

    Список переменных окружения:
    DOCUMENT_ROOT=/webdata/citforum/htdocs
    HTTP_ACCEPT=*/*
    HTTP_ACCEPT_LANGUAGE=ru
    HTTP_CONNECTION=keep-alive
    HTTP_HOST=www.citforum.ru
    HTTP_REFERER=http://vakh.online.com.ua/promo/library/index.html
    HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
    HTTP_VIA=1.1 ce
    HTTP_X_FORWARDED_FOR=213.59.141.209
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
    REMOTE_ADDR=213.59.136.10
    REMOTE_HOST=nat-cisco-gw.net.kht.ru
    REMOTE_PORT=41305
    SCRIPT_FILENAME=/webdata/citforum/htdocs/internet/html/ssi.shtml
    SERVER_ADDR=195.230.75.98
    SERVER_ADMIN=info@citforum.ru
    SERVER_NAME=www.citforum.ru
    SERVER_PORT=80
    SERVER_SIGNATURE=
    SERVER_SOFTWARE=Apache/1.3.12 (Unix) mod_ssl/2.6.2 OpenSSL/0.9.4
    GATEWAY_INTERFACE=CGI/1.1
    SERVER_PROTOCOL=HTTP/1.1
    REQUEST_METHOD=GET
    QUERY_STRING=
    REQUEST_URI=/internet/html/ssi.shtml
    SCRIPT_NAME=/internet/html/ssi.shtml
    DATE_LOCAL=11.07.2001 10:44:14
    DATE_GMT=11.07.2001 06:44:14
    LAST_MODIFIED=21.06.2000 16:31:33
    DOCUMENT_URI=/internet/html/ssi.shtml
    DOCUMENT_PATH_INFO=
    USER_NAME=andreya
    DOCUMENT_NAME=ssi.shtml

  • set var
    Устанавливает значение переменной окружения. Формат такой set var="ИМЯ_ПЕРЕМЕННОЙ" value="ЗНАЧЕНИЕ".

    Значение переменной SERVER_NAME:
    <!--#echo var="SERVER_NAME" --><BR>
    Сменим значение:
    <!--#set var="SERVER_NAME" value="www.dhls.ru" --><BR>
    Значение переменной SERVER_NAME:
    <!--#echo var="SERVER_NAME" --><BR>


    Вывод:

    Значение переменной SERVER_NAME:www.citforum.ru
    Сменим значение:
    Значение переменной SERVER_NAME: www.dhls.ru

  • if/else
    Наличие такой команды не может не радовать...:) Применяется для управления выводом страницы по условию. Синтаксис такой:

    <!--#if expr="УСЛОВИЕ1" -->
    HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно
    <--#elif expr="УСЛОВИЕ2" -->
    HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 истинно
    <--#else -->
    HTML-код, который будет выводиться, если все условия ложны
    <--#endif -->


    Условие - это либо строка, которая является истинной, если непустая, или набор операторов сравнения строк. Операторы могут быть =,!=,. Если вторая строка заключена в "/"(слэши), то условие истинно, если в первой строке встречается хоть одно вхождение второй строки. Можно объединять несколько операторов сравнения с помощью операторов &&(И) и ||(ИЛИ). Для группирования условий используются "()"(скобки).

    Броузер:<b>
    <!--#if expr="$HTTP_USER_AGENT=/Nav/ || $HTTP_USER_AGENT=/Mozilla/"-->
    Netscape Navigator
    <!--#elif expr="$HTTP_USER_AGENT=/MSIE/" -->
    Internet Explorer
    <!--#else -->
    Неизвестный (<!--#echo var="HTTP_USER_AGENT" -->)
    <!--#endif -->
    </b>


Источник: http://www.internet-technologies.ru/articles/article_51.html
Категория: SSI | Добавил: mas (16-Сентябрь-2006)
Просмотров: 513 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: