Опис SSI

Еріжоков А.А., DH’s Linux Site

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

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

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


AddType text/html .phtml

AddHandler server-parsed .phtml

Після цього всі документи з розширенням .phtml будуть перевірятися на 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-директиви:

echo var
Використовується для виведення значення змінної оточення.

Твій IP -
Твій броузер -
Мій сервер -
Ти прийшов зі сторінки -

А ось висновок:
Твій IP - 195.248.164.150
Твій броузер - Mozilla/4.7 [en] (Win98; I)
Мій сервер - in-hosting.agava.ru
Ти прийшов зі сторінки - http://dhls.agava.ru/webdesign.html

include file
include virtual
Включає в html-файл в місці, де йде виклик SSI, вміст зазначеного файлу. Відмінність include file від include virtual в тому, що в першому випадку використовується файл, що знаходиться в тому ж каталозі, що і html-файл, у другому випадку вказується шлях до файлу щодо поточного каталогу. Якщо за допомогою include file або include virtual включається cgi-скрипт, то в вміст сторінки потрапить висновок cgi-скрипта, а не його зміст.

Список змінних оточення:

<!--#include virtual="/cgi-bin/env.pl"--> <BR>
Мій PGP ключ:

<!--#include file="dh.asc"--> <BR>

А ось і висновок:


Список змінних оточення:

CHARSET = windows-1251
CHARSET_DETERMINED_BY = UserAgent
CHARSET_HTTP_METHOD = http://
CHARSET_SERVER_NAME = in-hosting.agava.ru:80
CHARSET_SERVER_PORT = 80
DATE_GMT = Thursday, 09-Nov-2000 05:50:42 GMT
DATE_LOCAL = Thursday, 09-Nov-2000 08:50:42 MSK
DOCUMENT_NAME = ssi.html
DOCUMENT_PATH_INFO =
DOCUMENT_ROOT = /home
DOCUMENT_URI = /d/dhls.agava.ru/WWW/ssi.html
GATEWAY_INTERFACE = CGI/1.1
HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
HTTP_ACCEPT_CHARSET = iso-8859-1,*,utf-8
HTTP_ACCEPT_ENCODING = gzip
HTTP_ACCEPT_LANGUAGE = en
HTTP_CONNECTION = close
HTTP_COOKIE = DHLinuxSiteMenu=0000010000; b=b
HTTP_HOST = dhls.agava.ru
HTTP_REFERER = http://dhls.agava.ru/webdesign.html
HTTP_USER_AGENT = Mozilla/4.7 [en] (Win98; I)
HTTP_X_FORWARDED_FOR = 195.248.164.150
LAST_MODIFIED = Sunday, 18-Jun-2000 04:30:13 MSD
PATH = /usr/local/bin:/usr/bin:/bin
PERLLIB = /site/perl/sys:/site/perl/lib
QUERY_STRING =
REMOTE_ADDR = 194.67.45.131
REMOTE_PORT = 1213
REQUEST_METHOD = GET
REQUEST_URI = /d/dhls.agava.ru/WWW/ssi.html
SCRIPT_FILENAME = /home/d/dhls.agava.ru/cgi/env.pl
SCRIPT_NAME = /cgi-bin/env.pl
SCRIPT_URI = http://in-hosting.agava.ru/d/dhls.agava.ru/WWW/ssi.html
SCRIPT_URL = /d/dhls.agava.ru/WWW/ssi.html
SERVER_ADDR = 172.16.1.6
SERVER_ADMIN = webmaster@agava.com
SERVER_NAME = in-hosting.agava.ru
SERVER_PORT = 80
SERVER_PROTOCOL = INCLUDED
SERVER_SOFTWARE = Apache/1.3.9 (Unix) PHP/3.0.12 AGAVA.Banners/1.10 rus/PL29.0
SOURCE_CHARSET = windows-1251
USER_NAME = dhls1

Мій PGP ключ:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQBtAzhowUIAAAEDAM+2uk0Jd15B49ZUd6oN6qsMWI/lLixReCHqRFh/1rCzGChj
AS82oFsXzW55bUCHvK2g9BWyPIdP2vr6HirF1RL/7eyZ0kCPgp/btBGMMdFlLEN8
lnZeDa/DyHe9VH8GYwAFEbQPREggPGRoQG51bGwucnU+iQB1AwUQOGjBQsPId71U
fwZjAQGfBwMAqOlRs0SbsM/WHunVOGWxRPaIbpU5BmAttA6j/iVzvcO1cn9O2mYw
YLuIC5KtucsYIRXPfopifY5RLmSQgnJhBQL2G7IcKGmYh9dTk5LYqJKAus+cNHRl
zGZX1Hw2DqOu=0Kmx
-----END PGP PUBLIC KEY BLOCK-----


fsize file
Вставляє розмір зазначеного файлу.

Розмір файлу цієї сторінки:

<!--#fsize file="ssi.html"--> <BR>

Висновок:

Розмір файлу цієї сторінки:
14k

flastmod file
Вставляє час останньої модифікації зазначеного файлу.

Час останньої модифікації файлу цієї сторінки:

<!--#flastmod file="ssi.html"--> <BR>

Висновок:

Час останньої модифікації файлу цієї сторінки:
Sunday, 18-Jun-2000 04:30:13 MSD

exec cmd
exec cgi
Запускає зовнішню програму (exec cmd) Або cgi-скрипт (exec cgi) і вставляє в вміст сторінки висновок.

Трохи інформації про тебе:

<!--#exec cgi="/cgi-bin/aboutyou.pl"--> <BR>
Зараз:

Висновок:

Трохи інформації про тебе:

Ти користуєшся броузером
, Версії
для операційної системи

"". У тебе прямий доступ в Internet. Твій IP - 195.248.164.150, а ім'я хоста - dial-164-150.alkar.net

Не так вже й багато ... :)

Зараз:

config errmsg
config sizefmt
config timefmt
Змінює різний параметри конфігурації SSI. config errmsg змінює стандартне повідомлення про помилку на введене користувачем. Повідомлення про помилку виникає при неправильному виконанні SSI-директиви, наприклад за відсутності cgi-скрипта, який ти намагаєшся запустити.

Це стандартна помилка при запуску скрипта, якого немає:

<!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR>
А тепер замінимо повідомлення про помилку й повторимо:
автору помилки " ->

<!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR>

Висновок:

Це стандартна помилка, що виникає при запуску скрипта, якого немає:

[an error occurred while processing this directive]
А тепер замінимо повідомлення про помилку й повторимо:

Помилка, пишіть автору помилки

Директива config sizefmt змінює формат виводу розміру файлу.

Розмір файлу цієї сторінки в кілобайтах:

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

<!--#fsize file="ssi.html"--> <BR>
Розмір файлу цієї сторінки в байтах:

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

<!--#fsize file="ssi.html"--> <BR>

Висновок:

Розмір файлу цієї сторінки в кілобайтах:

14k
Розмір файлу цієї сторінки в байтах:

14,735

Директива config timefmt змінює формат виведення дати і часу.

Час модифікації файлу цієї сторінки в секундах з 01.01.1970:

<!--#config timefmt="%s"-->

<!--#flastmod file="ssi.html"--> <BR>
Час модифікації файлу цієї сторінки в читабельному вигляді:

<!--#config timefmt="%d.%m.%Y %H:%M:%S"-->

<!--#flastmod file="ssi.html"--> <BR>

Висновок:

Час модифікації файлу цієї сторінки в секундах з 01.01.1970:

961288213
Час модифікації файлу цієї сторінки в читабельному вигляді:

18.06.2000 04:30:13

Параметри, які використовуються в 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
Виводить всі змінні оточення. Параметрів не має.

Список змінних оточення:

<!--#printenv -->

Висновок:

 Список змінних оточення:
CHARSET=windows-1251 CHARSET_DETERMINED_BY=UserAgent CHARSET_HTTP_METHOD=http:// CHARSET_SERVER_NAME=in-hosting.agava.ru:80 CHARSET_SERVER_PORT=80 DOCUMENT_ROOT=/home DOM=dhls.agava.ru HD=/d/dhls.agava.ru HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* HTTP_ACCEPT_CHARSET=iso-8859-1,*,utf-8 HTTP_ACCEPT_ENCODING=gzip HTTP_ACCEPT_LANGUAGE=en HTTP_CONNECTION=close HTTP_COOKIE=DHLinuxSiteMenu=0000010000; b=b HTTP_HOST=dhls.agava.ru HTTP_REFERER=http://dhls.agava.ru/webdesign.html HTTP_USER_AGENT=Mozilla/4.7 [en] (Win98; I) HTTP_X_FORWARDED_FOR=195.248.164.150 PATH=/var/home/roma/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/ bin:/mnt/usr/sbin:/usr/sbin:/usr/site/bin PERLLIB=/site/perl/sys:/site/perl/lib REMOTE_ADDR=194.67.45.131 REMOTE_PORT=1213 SCRIPT_FILENAME=/home/d/dhls.agava.ru/WWW/ssi.html SCRIPT_URI=http://in-hosting.agava.ru/d/dhls.agava.ru/WWW/ssi.html SCRIPT_URL=/d/dhls.agava.ru/WWW/ssi.html SERVER_ADDR=172.16.1.6 SERVER_ADMIN=webmaster@agava.com SERVER_NAME=in-hosting.agava.ru SERVER_PORT=80 SERVER_SIGNATURE=
Apache/1.3.9 Server at in-hosting.agava.ru Port 80
SERVER_SOFTWARE=Apache/1.3.9 (Unix) PHP/3.0.12 AGAVA.Banners/1.10 rus/PL29.0 SOURCE_CHARSET=windows-1251 TRUURI=ssi.html GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.1 REQUEST_METHOD=GET QUERY_STRING= REQUEST_URI=/d/dhls.agava.ru/WWW/ssi.html SCRIPT_NAME=/d/dhls.agava.ru/WWW/ssi.html DATE_LOCAL=09.11.2000 08:50:42 DATE_GMT=09.11.2000 05:50:42 LAST_MODIFIED=18.06.2000 04:30:13 DOCUMENT_URI=/d/dhls.agava.ru/WWW/ssi.html DOCUMENT_PATH_INFO= USER_NAME=dhls1 DOCUMENT_NAME=ssi.html
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: in-hosting.agava.ru
Змінимо значення:
Значення змінної SERVER_NAME: www.dhls.ru

if/else
Наявність такої команди не може не радувати … 🙂 Застосовується для управління виводу сторінки за умовою. Синтаксис такий:


HTML-код, який буде виводитися, якщо УСЛОВІЕ1 істинно
<- # Elif expr = "УСЛОВІЕ2" ->
HTML-код, який буде виводитися, якщо УСЛОВІЕ1 помилково, а УСЛОВІЕ2 істинно

<--#else -->
HTML-код, який буде виводитися, якщо всі умови помилкові

<--#endif -->


Умова – це або рядок, яка є істинною, якщо непорожній, або набір операторів порівняння рядків. Оператори можуть бути =,!=,<,<=,> і >. Якщо другий рядок укладена в “/“(Слеш), то умова істинно, якщо в першому рядку зустрічається хоч одне входження другого рядка. Можна об’єднувати кілька операторів порівняння за допомогою операторів &&(І) та ||(АБО). Для групування умов використовуються
()“(Дужки).

Броузер:

<!--#if expr="$HTTP_USER_AGENT=/Nav/ || $HTTP_USER_AGENT=/Mozilla/" -->

Netscape Navigator

<!--#elif expr="$HTTP_USER_AGENT=/MSIE/" -->

Internet Explorer

<!--#else -->
Невідомий ()

<!--#endif -->

</b>
Висновок:
Броузер:

Netscape Navigator


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*