Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Основы технологии Server Side Includes или SSI.

Источник: realcoding.net

Я хочу рассказать вам об основах технологии server side includes или ssi.
ssi переводится как "включения со стороны сервера". Эта технология помогает сохранить уйму времени при создании сайта и закачке его на сервер. Вообще ssi призвана, насколько это возможно, облегчить работу web-мастера.

Вот, к примеру, вполне реальная ситуация:
У вас есть сайт, который, разумеется, не использует ssi, с числом страниц близким к:, да возьмем хотя бы 50 страниц. Итак, на каждой странице вы, как хороший web-мастер, заботящийся о своих посетителях, разместил текстовое меню. И вдруг по каким-то причинам название какого-то раздела изменилось, а быть может, вам захотелось добавить новый. Что же теперь заново открывать все пятьдесят страниц и переписывать все снова и снова?! В нашем случае это, к сожалению, единственное решение, правда, некоторые хорошие редакторы смогут облегчить эту непосильную ношу (и еще как облегчить!, homesite, например).

Так вот, такой проблемы у вас не произошло бы, еcлu вы использовали технологию ssi. Объясняю: если бы вместо текстового меню на всех страницах было бы написано что-то вроде

<!--#include virtual=/ssi/menu_txt.html -->

А в файле "(www)/ssi/menu_txt.html" было бы содержание этого меню, то для того, что бы добавить или изменить раздел нужно было бы только поменять содержание всего лишь одного файла menu_txt.html. Как вы, наверно, уже догадались во все страницы вместо "комментария"

<!--#include virtual =/ssi/menu_txt.html -->

будет вставлен код из menu_txt.html.

Синтаксис ssi директив.


Синтаксис ssi директив таков:
Все директивы заключаются в комментарии

<!-- :[пробел]-->

, главным отличием ssi директивы от комментария является символ "#" сразу(!) после "<!--". То есть если быть точным, то все директивы ssi заключаются в

<!--#:[пробел]-->

и никак иначе!

Вот список некоторых ssi "функций" (они сразу пишутся после символа "#")

include

Включает текст (код, содержание) указываемого документа/файла в данный документ. Положение файлов на сервере указывается с помощью следующих атрибутов:

file - необходимо указать путь относительно данного документа, то есть включаемый документ/файл должен находиться либо в том же каталоге, что и данный документ, либо каталогами ниже/выше (some_catalog/, ../some_catalog).
virtual - можно указывать как относительный (как в случае с file), так и абсолютный путь (может содержать /some_catolog или ../some_catalog).

include позволяет включать результат работы cgi скриптов, а также обращаться к ним с какой-то заданной строкой запроса. Например,

<!--#include virtual =/cgi-bin/script.cgi?action=print&what=ok -->

set

Устанавливает значение какой-либо переменной. Переменная объявляется с помощью атрибута var, а её значение задается с помощью атрибута value.

<!--#set var=a value=variable -->

переменная a будет иметь значение variable.
А можно и так:

<!--#set var=b value=var -->
<!--#set var=c value=ble -->
<!--#set var=a value=${b}ia${c} -->

Переменная a будет равна varia${c}
Для того, что бы подставить переменную необходимо её заключить в фигурные скобки и перед всем этим поставить $. Если же вы хотите что бы знак доллара ($) отображался просто как символ, и не обозначал переменную, то поставьте перед ним слеш ()

echo

выводит значение переменной, указанной в атрибуте var.

<!--#echo var=a -->

то есть вместо этого кода вставляется значение переменной a

Примеры использования ssi.


Вот содержание главного документа.
main.html

<!--#set var=title value=Тестовая страница -->
<!--#set var=keywords value=ключевые слова -->
<!--#set var=description value=Описание этого документа -->
<!--#include virtual=head.html -->

<!--#include virtual=body.html -->

<!--#set var=copyright value=copyright &copy; -->
<!--#include virtual=down.html -->

А это содержание включаемых файлов.
head.html

<html>
<
head>
<
title>Заголовок:<!--#echo var=title --></title>
<meta http-equiv=content-type content=text/html>
<
meta name=description content=Описание: < !--#echo var=description -->>
<
meta name=keywords content=документ, <!--#echo var=keywords -->, html>
</
head>
<
body>

body.html

<h3>Тело документа</h3>

down.html

<p align=center><font size=2>
<!--
#echo var=copyright --></font></p>
</body>
</
html>

Как вы смогли убедиться из данного примера, пользоваться ssi не так уж и трудно, и более того очень полезно.

Технические аспекты использования ssi.


Стоит несколько слов сказать о техническом обеспечении, которое необходимо для использования ssi. Если вы просто создадите файл на своем локальном диске с корректными ssi командами и откроете его в вашем браузере, то никаких включений не произойдет, т.к все выражения типа <!-- :. --> для браузера являются чистой воды комментариями. Так называемые "включения" происходят еще на стадии обработки документа сервером, прежде чем послать его пользователю. В нашем случае такого этапа (обработка документа сервером) вообще нет. Так вот для того, что бы вы смогли полностью ощутить все преимущества ssi на своем локальном компьютере, вам нужен "домашний" web-сервер.
И вот еще что: не каждый провайдер, предоставляющий хостинг, поддерживает ssi. Обычно это проблема бесплатных хостингов. Но и некоторые из них, если уж и позволяют использовать ssi, то требуют за это некую плату, например, размещение рекламы на сайте.

Вместо заключения хочу сказать что, технология ssi была специально разработана и создана для того, что бы сэкономить ваше время, а, следовательно, и деньги. Так что в любом случае старайтесь использовать ssi в своих проектах, как говорится, на полную катушку.



Похожие статьи:
- Безопасный и удобный поиск на PHP
- Зачем интернету usability?
- XML. Обзор языка
- Как "заценить" собственный сайт?
- Простая поисковая система
- SSI: вкусно и полезно
- Поиск на странице Java Script
- Включение механизма Server-Side Includes
- Загрузка файла на PERL
- Первая домашняя страничка — это легко!
- Кодировки web-документов
- Язык веб-статистики
- Как слать письма PHP аттачами


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.002]