Server-Side Include | |
Идея Один из недостатков HTML - это то, что сам по себе он неизменен. Он пребывает и на сервере и у клиента в том самом виде, каким его создал автор. Попыток решить эту проблему много. Но сейчас мы рассмотрим только одно из решений - технологию SSI (Server-Side Include). Сущность этого метода заключается в следующем: в файл HTML, хранящийся на сервере включаются СПЕЦИАЛЬНЫЕ НЕ HTML комманды. Сервер, получив запрос на этот файл, просматривает его содержимое и находя одну из этих КОММАНД, выполняет определенные действия. В результате этих ДЕЙСТВИЙ файл HTML ИЗМЕНЯЕТСЯ и в измененном виде ОТПРАВЛЯЕТСЯ клиенту. Сам файл хранящийся на сервере НЕ ИЗМЕНЯЕТСЯ. Этап I. Включение поддержки SSI HTTP-Сервером Естественно, если Вы собираетесь использовать SSI, вы должны убедиться , что она работает на том сервере, где Вы будете размещать страницу. SSI поддерживают вероятно все HTTP-серверы для всех(?) платформ. Другой вопрос - включена ли эта функция на данном сервере. Так например для включения SSI на столь популярном HTTP-Сервер, как Apache (под UNIX,Win9x,WinNT можно взять на www.apache.org) необходимо внести в файл конфигурации следующие строки:
AddType text/html .shtml Кроме того для описания тех директорий в которых у Вас находятся .SHTML файлы Вы должны не забыть указать Options +Includes. Для других HTTP-серверов методы включения скорее всего другие (Если знаете как включать SSI под другими популярными HTTP-Серверами пишите). Если Вы не владеете собственным сервером и не настраиваете локальный на своем компьютере Вам остается только послать письмо администратору сервера, где Вы собираетесь разместить страницы с нижайшей просьбой включить SSI для Вашего каталога :) Этап II. Комманды SSI Любая комманда SSI имеет один и тот же синтаксис: <!--#command attribute=value attribute=value ... attribute=value --> Если присмотреться то можно легко заметить, что сама комманда заключена в пару тагов HTML <!-- --> обозначающих комментарий. Это гарантирует, что если Сервер не поддерживает SSI эта комманда все же не появится на экране броузера клиента. ВНИМАНИЕ! между последним значением и тагом --> должен быть ПРОБЕЛ. Иначе Вы можете неделю искать ошибку и не находить. Итак, комманды, которые SSI понимает HTTP-Сервер: config,echo,exec,fsize,flasmod,include,printenv,set. Include Я начну описание комманд не по порядку, так как считаю эту команду одной из самых полезных и простых. Эта комманда применяется для того, чтобы вставить в HTML файл другой файл. Синтаксис комманды: <!--#include file="относительный путь к файлу на диске" -->, или NB! В случае использования file Вы не можете использовать /.. или абсолютный путь. Например:
Файл index.shtml на сервере Exec Эта комманда выполняет файл CGI или под UNIX любую комманду с использованием /bin/sh. Результат исполнения - некая информация вставляемая в исходный HTML файл на место этой комманды. Вставляемая информация может быть двух типов. Это или результат выполнения CGI или, если CGI скрипт вернул ссылку на файл, то в исходный HTML вставляется ссылка <a href=...> на этот файл. (См. CGI (Common Gateway Interface)) Синтаксис комманды: <!--#include cgi="относительный URL CGI-приложения" -->, или NB! CGI-приложению передается в качестве параметра та информация, которая была передана странице. Поэтому Вы не можете указывать в URL команды параметры скрипту. Кроме того, если URL начинается с '/' то будет воспринят как абсолютный путь от корня. Flastmod Очень полезная комманда, которая дает возможность Вам выводить дату последней ее модефикации какого-либо файла. То есть, сервер смотрит дату последнего изменения файла и вставляет ее в вашу страницу. Синтаксис комманды: <!--#flastmod file="относительный путь к файлу на диске" -->, или NB! Для вывода даты последнего изменения той страницы, которая содержит комманду надо использовать не flastmod, а echo см. ниже. Fsize Комманда, аналогичная предыдущей - дает Вам возможность выводить размер какого-либо файла. То есть, сервер смотрит размер файла и вставляет его в вашу страницу. Синтаксис комманды: <!--#fsize file="относительный путь к файлу на диске" -->, или config Если Вы начнете использовать комманды flastmod и fsize Вы сразу столкнетесь с одной небольшой неприятностью: они вставляют размер и дату СОВЕРШЕННО не в том виде, о котором Вы думали. Для того, чтобы совместить желаемое и действительное нужно использовать комманду config: Синтаксис комманды: <!--#config errmsg="текст сообщения, которое надо отправить клиенту, если во время обработки этого файла появилась ошибка" sizefmt="Формат вывода размеров" timefmt="Формат вывода даты" --> Теперь подробнее о параметрах sizefmt и timefmt: sizefmt в качестве аттрибута воспринимает три варианта: "bytes","Kb","Mb". Я думаю, что объяснять значение этих форматов не надо :) С коммандой timefmt все несколько сложнее. В качестве параметра она воспринимает строку. Эта строка содержит в себе текст и переменные. Например: "%d/%m/%Y". Здесь текст - это знаки '/', а переменные - %d,%m.%Y - они будут заменены на день, число и год (из 4 цифр) соответственно. Превратится на выходе в классическое представление даты: дд/мм/гггг. echo Эта комманда позволяет вставить в страницу одну из "встроенных переменных". Встроенные переменные это переменные которые существуют и имеют значение независимо от того, используете Вы их или нет. Основные из встроенных переменных: DATE_GMT - Текущая дата/время формата GMT DATE_LOCAL - Местная дата/время DOCUMENT_NAME - имя файла, запрошенного пользователем DOCUMENT_URL - путь URL к файлу, запрошенному пользователем LAST_MODIFIED - дата/время последнего изменения файла запрошенного пользователем Синтаксис комманды: <!--#echo var="имя встроенной переменной" --> Например:
Файл index.shtml NB! Обратите внимание, что формат вывода даты/времени определен коммандой config Этап III. И зачем все это надо Итак. Зачем необходима технология SSI. Самое малое - с ее помощью можно вставить дату последнего изменения страницы. Очень полезно и любимо людьми. Во вторых, что просто бесценно - можно разделить дизайн сайта и содержимое. То есть: Почти весь современный дизайн делается в виде таблицы. От страницы к странице меняется одна - две - три -пять :) ячеек. Если мы вырежем неизменяемую часть в отдельные файлы, то сможем создавать страницы типа:
Файл index.shtml Сотни и сотни других способов применения технологии Server Side Include предстоит придумать Вам!
|
|
|