Область применения SSI достаточно обширна, эту технологию используют для автоматического добавления на веб-страницу содержимого другого файла, вывода значений переменных окружения, встраивания результата выполнения CGI-программ и т.д. Сразу следует оговорить, что достаточно сложный сайт лучше целиком делать с использованием серверного языка программирования или воспользоваться готовым «движком» —- автоматизированной системой по управлению содержанием сайта. SSI же в основном применяется для HTML-документов, чтобы упростить процесс их создания и расширить возможности. В то же время, понятие «сложный сайт» достаточно размыто, так что можно сделать вполне интересный и полезный ресурс исключительно с помощью HTML и SSI.
Далее рассмотрим некоторые аспекты применения SSI на практике.
Добавление на веб-страницу содержимого другого файла
Основное преимущество SSI заключается в том, что это технология позволяет вставлять содержимое текстового документа или HTML-файла в текущую веб-страницу. В случае добавления текстового файла, его содержимое вставляется без всякого форматирования. Для HTML-документа форматирование сохраняется, включая текст и теги.
Как правило, код HTML веб-страниц на сайте имеет повторяющуюся структуру. Например, верхняя часть («шапка») и нижняя часть («подвал») для всех веб-страниц остаются обычно неизменными. Логично было бы вынести их в отдельные файлы и подключать с помощью директивы include, как показано в примере 4.1.
Пример 4.1. Встраивание содержимого файла в текущий документ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body><!--#include virtual="/inc/header.html"-->
Содержание текущей веб-страницы
<!--#include virtual="/inc/footer.html"-->
</body>
</html>
В данном примере в текущий документ вставляется содержимое файла header.html и footer.html через директиву include. Параметр virtual задает путь к файлу относительно корня сайта.
Счетчик посетителей
На веб-странице часто требуется использовать динамические вставки, вроде, сколько человек прочитало данный документ. Для этого вначале требуется написать программу на одном из языков программирования. Программа должна при обращении к ней увеличивать счетчик посетителей на единицу и результат записывать в базу данных или файл. Затем вызов программы происходит одним из следующих способов.
Способ 1. Применение директивы exec
Для включения результата выполнения программы в текущую веб-страницу используется директива exec, как показано в примере 4.2. Значением параметра cgi служит путь к серверной программе.
Пример 4.2. Применение директивы exec
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>...
Статью прочитало, чел.: <!--#exec cgi="/cgi-bin/counter.cgi?id=5"-->
</body>
</html>
В данном примере программе counter.cgi передается параметр id со значением 5. Этот параметр выступает в качестве идентификатора статьи. Таким образом, используется один файл для подсчета числа читателей, а меняется только идентификатор статьи.
Способ 2. Использование директивы include
Директива include может применяться не только для вставки HTML-файла в текущий документ, но и для вызова серверной программы (пример 4.3).
Пример 4.3. Использование директивы include
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>...
Статью прочитало, чел.: <!--#include virtual="/inc/counter.php?id=5"-->
</body>
</html>
В данном примере вызывается программа, написанная на PHP, она подсчитывает число обращений к определенной статье, которая однозначно определяется с помощью идентификатора. Результат выполнения программы вставляется в место, указанное директивой SSI.
Счетчик посетителей не единственная вещь, где могут пригодиться возможности SSI. Аналогичным способом на веб-страницу можно добавлять любые изменяемые данные — результат выполнения программ на сервере.