SSI в примерах
Страница: 4
Контекстный вывод текста в зависимости от условий Предположим, у нас стоит задача менять внешний вид первой страницы узла в зависимости от того, откуда пришел пользователь. Для реализации этой задачи используется следующая конструкция: <!--#if expr="$HTTP_REFERER=/www.zzz.ru/" -->
Здесь совершаются необходимые действия
<!--#endif -->
т.е. сравнивается переменная HTTP_REFERER
Борьба с разными версиями дизайна для разных браузеров Всем известно, что браузеры различных производителей и версий по-разному отображают одну и ту же HTML-разметку документа, начиная от специальных тагов и атрибутов и заканчивая поддержкой различных версий JavaScript. Для того, чтобы веб-узел выглядел нормально и для одной версии браузера и для другой или чтобы не сыпались ошибки JavaScript средствами SSI можно сделать проверку версий или браузеров и выдавать различные варианты HTML-разметки. Для этого анализируется переменная HTTP_USER_AGENT, в которой содержится информация о типе и производителе браузера:<!--#if expr="$HTTP_USER_AGENT=/Mozilla\/4/ || $HTTP_USER_AGENT=/Mozilla\/5/" --> Если версия браузера не ни же 4 или 5, то вывести вариант дизайна, использующий, например, DHTML <!--#else --> Здесь вывести простой дизайн <!--#endif -->
Борьба с оформлением результатов работы скриптов Самая большая проблема со скриптами заключается в том, что если есть большое количество наработанного ПО - при смене дизайна требуется их перенастройка. Хорошо, если ПО сделано правильно и изменение шаблонов отображения не касается самой математики, однако и в таких случаях существуют проблемы. Например, на странице поиска было бы неплохо крутить баннеры и рекламных сетей, но директивы SSI не отрабатываются в файлах .cgi. Решить подобные проблемы можно использованием SSI следующим образом: не скриптом обрабатывать шаблоны отображения, а вызывать скрипт из HTML-документа через SSI (к сожалению, таким образом можно работать только с теми скриптами, которые используют метод GET - переменная CONTENT_LENGTH не доступна в SSI) Итак, как это делается Есть HTML-документ, который размечен в общем стиле дизайна. В него вставляется директива <!--#include virtual="/cgi-bin/script.cgi?$QUERY_STRING" -->
На первом шаге, пока QUERY_STRING пуста - вызывается первый шаг скрипта, на последующих шагах работы скрипта - передаются необходимые параметры. В самом скрипте важны три строчки: ...
# определение адреса, куда направлять данные
$query = $ENV{QUERY_STRING};
# определение места, из которого был вызван скрипт
$uri = $ENV{DOCUMENT_URI};
...
# отправка данных в тот же HTML-документ, из
которого был вызван скрипт
print "<form action=$uri method=get>\n";
...
Что можно сделать, используя Cookie и SSI Часто встречается конструкция на JavaScript, которая выводит "Здравствуйте, Иван Иваныч!" при заходе на страницу веб-узла. То же самое можно проделать с помощью SSI директивой <!--#echo var="HTTP_COOKIE" -->
1 2 3 [4] 5
|