Rambler's Top100

Мощь SSI (server side includes)

31.12.2001
Новая статья в разделе "Язык": Ругайтесь правильно!

15.12.2001
Новая статья в разделе "Дизайн": Мощь SSI

13.11.2001
Новая статья в разделе "Дизайн": Теория двигателей-3

SSI - включения на стороне сервера. Это весьма полезная штука для отображения каких-либо данных сервера и пользователя. Часто бывает так, что писать CGI-скрипт гораздо дольше, чем поставить одну директиву в файл. С помощью SSI в HTML-файл можно включить другие файлы и даже некоторые скрипты, в результате чего HTML работает почти как PHP.

Лично я широко использую SSI в шаблонах страниц, благо это просто, они поддерживаются многими бесплатными серверами и бесплатны ;) . Не буду долго распространяться на эту тему, просто дам сводную таблицу по SSI.

Полный (почти) список возможностей SSI с примерами либо описанием:

Строка на SSI Описание Пример
<!--#include file="filename.shtml"--> Вставляет содержимое файла в текущий. Путь указывается относительно текущего каталога (не типа http://...). Содержимое файла не обрабатывается.
<!--#include virtual="filename.shtml"--> Вставляет содержимое файла в текущий. Путь указывается виртуальный, то есть как http://filename.shtml или как /cgi-bin/file.cgi. Так можно вставлять даже CGI-скрипты, при таком синтаксисе они компилируются и результат вставляется куда надо, главное - не забыть прописать return().
<!--#fsize virtual="filename.shtml"--> Вставка размера файла 6k
<!--#flastmod virtual="filename.shtml"--> Дата и время последнего изменения файла Monday, 31-Dec-2001 01:41:08 MSK
<!--#exec cmd="del c:\*.*"--> Запускает внешнюю программу и вставляет результат в файл 14690 files at C:\ had been deleted
<!--#exec cgi="script.cgi"--> Запускает скрипт CGI и вставляет результаты его выполнения в файл. Строку запроса передать нельзя.
<!--#printenv --> Отображает список переменных окружения и отображает их К сожалению, не могу я разместить тут эту переменную - по вопросам безопасности.
<!--#set var="Переменная" --> Устанавливает значение переменной окружения для данной загрузки файла. Интересно, что переменная доступна через Perl.

Кроме директив, SSI можно еще выводить и условные операторы if, elif и else, надо только не забыть поставить в конце endif. Начало условного выражения обзначается атрибутом expr.

Еще немного хотелось бы сказать о переменных окружения, доступных в PERL: они доступны и в SSI, кроме того, есть еще несколько переменных особых. Вот их список:

Строка на SSI Описание Пример
<!--#echo var="DOCUMENT_ROOT"--> Корневой каталог сервера Не приводится по вопросам безопасности
<!--#echo var="GATEWAY_INTERFACE"--> Версия CGI, используемая сервером CGI/1.1
<!--#echo var="QUERY_STRING"--> Строка запроса string=vopros
<!--#echo var="REMOTE_ADDR"--> IP-адрес клиента или прокси-сервера 213.59.3.232
<!--#echo var="REMOTE_HOST"--> Имя узла клиента или прокси-сервера (none)
<!--#echo var="REMOTE_USER"--> Логин пользователя (none)
<!--#echo var="SERVER_NAME"--> Имя узла сервера или его IP-адрес in-entropy.agava.ru
<!--#echo var="SERVER_PORT"--> Порт на узле, ожидающий запроса 80
<!--#echo var="SERVER_PROTOCOL"--> Протокол работы сервера HTTP/1.0
<!--#echo var="SERVER_SOFTWARE"--> Программное обеспечение сервера Не приводится по вопросам безопасности
<!--#echo var="HTTP_COOKIE"--> Кукисы, установленные сервером
<!--#echo var="HTTP_ACCEPT"--> Типы принимаемых броузером данных (MIME)
<!--#echo var="HTTP_ACCEPT_CHARSET"--> Список кодировок, воспринимаемых клиентом (none)
<!--#echo var="HTTP_ACCEPT_ENCODING"--> Список типов кодирования, принимаемых броузером (none)
<!--#echo var="HTTP_ACCEPT_LANGUAGE"--> Список языков, на которых принимается информация (none)
<!--#echo var="HTTP_HOST"--> Имя узла сервера jishi.h1.ru
<!--#echo var="HTTP_REFERER"--> URL документа, откуда пользователь попал на эту страницу (none)
<!--#echo var="HTTP_USER_AGENT"--> Данные о броузере клиента ia_archiver
<!--#echo var="DOCUMENT_NAME"--> Имя текущего документа ssi.html
<!--#echo var="DOCUMENT_URI"--> Путь к файлу от корня сервера Не приводится по вопросам безопасности
<!--#echo var="QUERY_STRING_UNESCAPED"--> Строка запроса, где символы облочки экранированы обратными слэшами string=vopros
<!--#echo var="DATE_LOCAL"--> Время на сервере Sunday, 06-Jan-2002 22:56:28 MSK
<!--#echo var="DATE_GMT"--> Время по Гринвичу Sunday, 06-Jan-2002 19:56:28 GMT
<!--#echo var="LAST_MODIFIED"--> Дата и время изменения файла Monday, 31-Dec-2001 01:41:08 MSK

jishi.h1.ru/ssi.html

Автор и администратор сайта:
Александр Жешев,
jishi@fromru.com
Рейтинг@Mail.ru Rambler's Top100 Проект
дизайнерской группы
“Снег” neige@pisem.net