Shtml будут проверяться на ssi-директивы. Но удобнее будет определить чтобы все html



Дата27.05.2016
өлшемі85 Kb.
#96413


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 .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-директивы:



echo var

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

Твой IP -

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

Мой сервер -

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


А вот вывод:

Твой IP - 195.7.163.66
Твой броузер - Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
Мой сервер - www.citforum.ru
Ты пришел со страницы - http://www.citforum.ru/

include file
include virtual

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



fsize file

Вставляет размер указанного файла (в килобайтах).

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

Вывод:


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

flastmod file

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

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

Вывод:


Время последней модификации файла этой страницы: 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-скрипта, который ты пытаешься запустить.

Это стандартная ошибка при запуске скрипта, которого нет:

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

автору ошибки"-->

Вывод:


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

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

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

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


Вывод:

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


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

Директива config 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

printenv

Выводит все переменные окружения. Параметров не имеет.

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

Вывод:


Список переменных окружения:
DOCUMENT_ROOT=/webdata/citforum/htdocs HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* HTTP_ACCEPT_ENCODING=gzip, deflate HTTP_ACCEPT_LANGUAGE=ru HTTP_CONNECTION=Keep-Alive HTTP_COOKIE=b=b HTTP_HOST=www.citforum.ru HTTP_REFERER=http://www.citforum.ru/ HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin REMOTE_ADDR=195.7.163.66 REMOTE_PORT=4327 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) UNIQUE_ID=OWHFRMPmS2IAAOUIqY4 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=04.07.2000 15:06:44 DATE_GMT=04.07.2000 11:06:44 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:

Сменим значение:


Значение переменной SERVER_NAME:

Вывод:

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


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

if/else

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


HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно


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

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

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

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

Броузер:

Netscape Navigator

Internet Explorer

Неизвестный ()



Вывод:


Броузер: Netscape Navigator

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


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

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

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

Дата последней модификации документа


Простая директива:

Сегодняшнее число в нужном формате
Если нам нужно вывести дату не в стандартном для данной конфигурации программных средств виде, а в том, какой нам нужен (например, "вторник, 30 мая, 2000"), то можно воспользоваться следующей конструкцией:

Получение дня недели

Получение числа

Получение названия месяца

Получение года

Собственно вывод получившейся строки

,  , 

Борьба с разными версиями дизайна для разных браузеров


Всем известно, что браузеры различных производителей и версий по-разному отображают одну и ту же HTML-разметку документа, начиная от специальных тагов и атрибутов и заканчивая поддержкой различных версий JavaScript. Для того, чтобы веб-узел выглядел нормально и для одной версии браузера и для другой или чтобы не сыпались ошибки JavaScript средствами SSI можно сделать проверку версий или браузеров и выдавать различные варианты HTML-разметки. Для этого анализируется переменная HTTP_USER_AGENT, в которой содержится информация о типе и производителе браузера:

Если версия браузера не ни же 4 или 5, то вывести вариант дизайна, использующий, например, DHTML

Здесь вывести простой дизайн

Подобная конструкция используется для построения фреймовой структуры и выводе внутреннего меню (для Netscape - на DHTML, для MSIE - на ActiveX) на веб-узле журнала "ОМ"





Достарыңызбен бөлісу:




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет