Вход Регистрация
Файл: work/ssi/index.php
Строк: 478
<?
require '../../config.php';
$title 'SSI';
include 
'../../style/head.php';
aut();
who_add(0'servise');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SSI</title>
</head>

<body>
      <p align="center"><b><font face="Verdana" color="#000080" size="3">SSI&nbsp;</font></b>
      <p><font size="2" face="Verdana">Если вы
      прогуляетесь по страницам этого сайта,
      вы увидите, что меняются только тексты
      страниц и их заголовки - а всё остальное -
      детали оформления, меню навигации, форма
      для комментариев и строка поиска - всё
      это остаётся неизменным.</font>
      </p>
      <p><font size="2" face="Verdana">На этом сайте около
      сотни различных страниц и все они
      оформлены одинаково. Но посмотрите, что
      пришлось бы сделать, если бы было нужно,
      например, изменить вид меню навигации.
      Если всё пришлось бы делать &quot;по
      старинке&quot;, было бы нужно открыть
      каждый из сотни файлов, заменить один
      фрагмент HTML-кода другим и затем закачать
      изменённые страницы на сайт. Однако на
      этом сайте &quot;всего лишь&quot; несколько
      мегабайт текста. А что пришлось бы
      делать, если размер сайта измерялся бы
      сотнями мегабайт?</font>
      <p><font size="2" face="Verdana">У всех, кто когда-либо
      начинал более или менее серьёзно
      заниматься созданием вебстраниц,
      обязательно возникала мысль - а как
      неплохо бы было, если бы повторяющиеся
      фрагменты HTML-кода можно было бы писать
      только по одному разу - чтобы затем они
      вставлялись бы в нужные места страниц
      автоматически. Самые продвинутые
      пытались воспользоваться Java-скриптами,
      чтобы добиться этого - но тогда страницы
      начинали растекаться жиром на десятки
      килобайт, а браузеры посетителей
      захлёбывались в сложном и обьёмном коде
      скриптов.</font>
      <p><font size="2" face="Verdana">Между тем решение
      проблемы давно уже было - правда
      клиентам бесплатных хостингов оно не
      было доступно. На Webservis.ru оно есть и зовут
      его &quot;SSI&quot; - &quot;Server Side Includes&quot;.
      Перевести это можно, в принципе, как «сборкой
      страниц занимается вебсервер».</font>
      <p><font size="2" face="Verdana">Назначение технологии
      SSI - указать вебсерверу, какой фрагмент
      взять, и куда его приткнуть, прежде чем
      выдать его посетителю страницы. Так, ни
      на одной моей странице нет кода, который
      отвечает за показывание баннера - а вы
      его видите, и не один, а даже два. Просто
      на каждой из моих страниц вверху и внизу
      есть фрагмент <b>&lt;!--#include virtual=&quot;fragments/banner.html&quot;--&gt;</b>.
      Когда ваш браузер попросил у вебсервера
      Webservis.ru страницу, на которой вы сейчас
      находитесь, сервер обнаружил эту метку в
      тексте страницы. В ней содержится
      указание взять из подкаталога Fragments файл
      banner.html и вставить его вместо этой метки.
      Поэтому если мне вдруг когда нибудь
      захочется поменять баннер, мне будет
      достаточно изменить один только файл
      banner.html - а менять все страницы не
      понадобится совершенно.</font>
      <p><font size="2" face="Verdana">Ещё одно возможное
      применение SSI - с его помощью можно
      выводить различную информацию о
      странице. Так, команда <b>&lt;!--#flastmod file=&quot;creating-ssi.shtml&quot;--&gt;</b>
      вставит в текст страницы число, когда
      эта страница последний раз обновлялась.
      Точно так же можно выводить название
      этой страницы и путь к ней, её размер и
      много чего ещё.</font>
      <p><font size="2" face="Verdana">Но давайте по порядку.
      Итак, как вы могли увидеть, SSI-команды
      вставляются в текст страниц, как обычные
      комментарии, внутри тэга <nobr><b>&lt;!--#SSI-команда=&quot;параметры&quot;
      --&gt;</b></nobr>. Единственное отличие от
      простого комментария - в начале должен
      обязательно присутствовать символ &quot;#&quot;.</font>
      <p><font size="2" face="Verdana">Вот список основных SSI-команд:</font></p>
      <span align="left">
      <h3><font size="2" face="Verdana">#include file</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Вставляет файл из той
        же самой папки. Так, <nobr><b>&lt;!--#include file=&quot;file.txt&quot;&gt;</b></nobr>
        укажет серверу взять файл file.txt и
        вставить его содержимое в страницу</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#include virtual</font></h3>
      <blockquote>
        <font size="2" face="Verdana">В отличие от
        предыдущей команды эта позволяет
        вставлять файлы из других папок. Так, <nobr><b>&lt;!--#include
        virtual=&quot;kakoj/nibud/file.txt&quot;&gt;</b></nobr> укажет
        серверу взять файл file.txt из подпапки nibud
        папки kakoj. Как видите, здесь
        используются относительные пути к
        файлам.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#fsize file</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Выводит размер файла (формат
        числа указывается командой config sizefmt).
        Так <nobr><b>&lt;!--#fsize file=&quot;creating-ssi.shtml&quot;&gt;</b></nobr>
        выведет значение размера cтраницы, на
        которой вы сейчас находитесь - 26,576 байт.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#flastmod file</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Выводит дату
        последнего обновления файла (формат
        числа указывается с помощью директивы
        config datefmt).</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#exec cmd</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Запускает указанную
        программу и вставляет выведенные ей
        строки в текст страницы. Например, <b>&lt;!--#exec
        cmd=&quot;date&quot;--&gt;</b></font>
      </blockquote>
      <h3><font size="2" face="Verdana">#exec cgi</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Запускает указанный
        скрипт и вставляет результат его
        работы в страницу. Но лучше пользуйтесь
        для этого директивой include virtual (exec cgi
        может иногда не работать). Так, скрипт,
        который каждый раз выводит новый
        пример запроса для поиска в правом
        верхнем углу этой страницы, вызывается
        у меня командой <nobr><b>&lt;!--#include virtual=&quot;/cgi-bin/random-example.cgi&quot;--&gt;</b></nobr>.
        <a href="javascript:location.reload()">Перезагрузите эту
        страницу</a>, и эта фраза - &quot;установка
        Perl&quot; , вставляемая скриптом random-example.cgi
        через SSI-команду include virtual сменится
        другой.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#config errmsg</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Вы, наверное, нередко
        встречали фразу &quot;[an error occurred while processing
        this directive]&quot; на некоторых недоделанных
        или неправильно работающих сайтах. Эту
        фразу вебсервер выводит тогда, когда он
        не может запустить скрипт, если в том
        содержатся ашипки или очепятки или же
        этого скрипта просто не существует.
        Команда config errmsg позволяет заменить эту
        непонятную фразу на что-нибудь более
        вменяемое. Советую вставлять первой
        строкой во все страницы, которые вы
        создаёте, SSI-команду <b>&lt;!--#config errmsg=&quot;[При
        открытии страницы произошла ошибка.
        Пожалуйста, сообщите об этом хозяину
        сайта.]&quot;--&gt;</b></font>
      </blockquote>
      <h3><font size="2" face="Verdana">#config timefmt</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Указывает серверу, в
        каком формате выдавать дату командой
        flastmod. По умолчанию это что-то вроде &quot;<cite>Sunday,
        10-Sep-2000 17:58:59 Московское время (лето)</cite>&quot;.
        Вам же может захотеться получить дату в
        виде день/месяц/год. Для этого с
        командой config timefmt используется нужное
        сочетание следующих возможных
        параметров:<br>
        &nbsp;</font>
        <table border="0" cellpadding="3" cellspacing="1" bgcolor="#003399">
          <tbody>
            <tr bgcolor="#FFFFFF">
              <td><b><font size="2" face="Verdana">Формат</font></b><font size="2" face="Verdana">&nbsp;&nbsp;</font></td>
              <td><b><font size="2" face="Verdana">Описание</font></b><font size="2" face="Verdana">&nbsp;&nbsp;</font></td>
              <td><b><font size="2" face="Verdana">Пример</font></b><font size="2" face="Verdana">&nbsp;&nbsp;</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%a</font></td>
              <td><font size="2" face="Verdana">Краткое название
                дня недели</font></td>
              <td><font size="2" face="Verdana">Mon</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%A</font></td>
              <td><font size="2" face="Verdana">Полное название
                дня недели</font></td>
              <td><font size="2" face="Verdana">Monday</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%b</font></td>
              <td><font size="2" face="Verdana">Аббревиатура
                названия месяца</font></td>
              <td><font size="2" face="Verdana">Dec</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%B</font></td>
              <td><font size="2" face="Verdana">Полное название
                месяца</font></td>
              <td><font size="2" face="Verdana">December</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%d</font></td>
              <td><font size="2" face="Verdana">День месяца</font></td>
              <td><font size="2" face="Verdana">01 (не 1)</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%D</font></td>
              <td><font size="2" face="Verdana">Дата в формате
                &quot;%m/%d/%y&quot;</font></td>
              <td><font size="2" face="Verdana">12/31/99</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%e</font></td>
              <td><font size="2" face="Verdana">День месяца</font></td>
              <td><font size="2" face="Verdana">13</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%H</font></td>
              <td><font size="2" face="Verdana">Часы в 24-часовом
                формате</font></td>
              <td><font size="2" face="Verdana">13</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%I</font></td>
              <td><font size="2" face="Verdana">Часы в 12-часовом
                формате</font></td>
              <td><font size="2" face="Verdana">01</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%j</font></td>
              <td><font size="2" face="Verdana">День года</font></td>
              <td><font size="2" face="Verdana">235</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%m</font></td>
              <td><font size="2" face="Verdana">Номер месяца</font></td>
              <td><font size="2" face="Verdana">01</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%M</font></td>
              <td><font size="2" face="Verdana">Минуты</font></td>
              <td><font size="2" face="Verdana">03</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%p</font></td>
              <td><font size="2" face="Verdana">AM/PM (до полудня/после)</font></td>
              <td><font size="2" face="Verdana">AM</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%r</font></td>
              <td><font size="2" face="Verdana">Время в формате
                &quot;I:M:S p&quot;</font></td>
              <td><font size="2" face="Verdana">11:35:46 PM</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%S</font></td>
              <td><font size="2" face="Verdana">Секунды</font></td>
              <td><font size="2" face="Verdana">34</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%s</font></td>
              <td><font size="2" face="Verdana">Время в секундах
                с 01.01.1970</font></td>
              <td><font size="2" face="Verdana">957228726</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%T</font></td>
              <td><font size="2" face="Verdana">Время в формате
                &quot;%H:%M:%S&quot;</font></td>
              <td><font size="2" face="Verdana">14:05:34</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%U</font></td>
              <td><font size="2" face="Verdana">Неделя года</font></td>
              <td><font size="2" face="Verdana">16</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%w</font></td>
              <td><font size="2" face="Verdana">Номер дня недели</font></td>
              <td><font size="2" face="Verdana">4</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%y</font></td>
              <td><font size="2" face="Verdana">Год в формате ГГ</font></td>
              <td><font size="2" face="Verdana">99</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%Y</font></td>
              <td><font size="2" face="Verdana">Год в формате
                ГГГГ</font></td>
              <td><font size="2" face="Verdana">1999</font></td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td><font size="2" face="Verdana">%Z</font></td>
              <td><font size="2" face="Verdana">Временная зона</font></td>
              <td><font size="2" face="Verdana">MSK</font></td>
            </tr>
          </tbody>
        </table>
        <font size="2" face="Verdana"><br>
        Таким образом, команда <b>&lt;!--#config timefmt=&quot;%d/%m/%Y,
        %H:%M:%S&quot;--&gt;</b> укажет серверу выдавать
        время последнего обновления файла в
        таком формате - <i>21/11/2000, 00:42:33</i>, а
        команда <b>&lt;!--#config timefmt=&quot;%d/%m/%y&quot;--&gt;</b>
        - в таком - <i>21/11/00</i>.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#config sizefmt</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Изменяет формат вывода
        значения размера файла. <b>&lt;!--#config sizefmt=&quot;abbrev&quot;--&gt;</b>
        заставляет выводить размер файла в
        килобайтах (<i> 26k</i>), а <b>&lt;!--#config sizefmt=&quot;bytes&quot;--&gt;</b>
        - в байтах (<i>26,576</i>)</font>
      </blockquote>
      <blockquote>
        <font size="2" face="Verdana">Обратите внимание на
        то, что команды #config sizefmt и #config timefmt
        влияют на все связанные с ними SSI-команды
        от того места, откуда они были вызваны и
        до самого конца страницы. Поэтому
        каждый вызов команд #flastmod и #fsize
        снабжайте своей командой #config - так
        проще и спокойнее.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#printenv</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Выводит список так
        называемых &quot;переменных окружения&quot;
        (&quot;environment variables&quot;) с их значениями. В
        их числе переменные:<br>
        &nbsp;<br>
        <b>DOCUMENT_ROOT</b> (название основной папки
        для вебстраниц на сервере, обычно ваша
        папка public_html и путь к ней),<br>
        <b>HTTP_USER_AGENT</b> (название браузера,
        которым пользуется посетитель),<br>
        <b>REMOTE_ADDR</b> (IP-адрес посетителя),<br>
        <b>REMOTE_HOST</b> (адрес посетителя в
        нормальной форме - например, d150.p7.col.ru)<br>
        <b>SERVER_ADDR</b> (IP-адрес вашего сайта)<br>
        <b>SERVER_NAME</b> и <b>HTTP_HOST</b> (адрес сервера,
        типа userguide.webservis.ru),<br>
        <b>DOCUMENT_URI</b>, <b>REQUEST_URI</b> и <b>SCRIPT_NAME</b> (запрошенная
        вами страница, типа /examples/mysqlexample.shtml.
        Сочетание SERVER_NAME и REQUEST_URI даёт
        привычный вам адрес страницы),<br>
        <b>DOCUMENT_NAME</b> (только название файла),<br>
        <b>SCRIPT_FILENAME</b> (полный путь к вебстранице
        на сервере. Например /home/home-webservis/public_html/
        и так далее),<br>
        <b>SERVER_SOFTWARE</b> (название сервера,
        например, Apache/1.3.12 (Unix))<br>
        <b>SERVER_ADMIN</b> (почтовый адрес владельца
        сервера, указанный при установке. Когда
        вы регистрируетесь, имя созданного для
        вас на Webservis.ru ящика прописывается там),<br>
        <b>DATE_LOCAL</b> (сегодняшниее время и дата в
        вашем часовом поясе),<br>
        <b>DATE_GMT</b> (то же, но по Гринвичу),<br>
        <b>LAST_MODIFIED</b> (дата и время последнего
        обновления страницы)<br>
        &nbsp;<br>
        Никаких параметров у этой SSI-команды
        нет. Просто <b><nobr>&lt;!--#printenv --&gt;</nobr></b>.<br>
        &nbsp;<br>
        То, что выводит эта команда, когда её
        обрабатывает сервер Webservis.ru, работающий
        на Unix и вебсервер, который, быть может,
        вам захочется <a href="http://www.topserver.ru" target="_blank">установить
        для тестирования сайта на ваш домашний
        компьютер под Windows</a>, отличается на
        добрых две трети. Учитывайте это!</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#echo var</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Выводит знчение
        определённой переменной. Например, <b>http://&lt;!--#echo
        var=&quot;HTTP_HOST&quot;--&gt;&lt;!--#echo var=&quot;DOCUMENT_URI&quot;--&gt;</b>
        выведет адрес этой страницы - <i>http://userguide.webservis.ru/creating-ssi.shtml</i>.</font>
      </blockquote>
      <h3><font size="2" face="Verdana">#set var value</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Присваивает новое
        значение переменной. Например, <b>&lt;!--#set
        var=&quot;SERVER_ADMIN&quot; value=&quot;новый@адрес.ru&quot;--&gt;</b></font>
      </blockquote>
      <h3><font size="2" face="Verdana">#if, #elif, #else и #endif</font></h3>
      <blockquote>
        <font size="2" face="Verdana">Применяется для
        управления выводом страницы по
        заданному условию. Синтаксис
        используется такой:<br>
        <b>&lt;!--#if expr=&quot;ПЕРВОЕ-УСЛОВИЕ&quot; --&gt;<br>
        HTML-код, который будет выводиться, если
        ВТОРОЕ-УСЛОВИЕ истинно<br>
        &lt;--#elif expr=&quot;ВТОРОЕ-УСЛОВИЕ&quot; --&gt;<br>
        HTML-код, который будет выводиться, если
        ПЕРВОЕ-УСЛОВИЕ ложно, а ВТОРОЕ-УСЛОВИЕ
        истинно<br>
        &lt;--#else --&gt;<br>
        HTML-код, который будет выводиться, если
        все условия ложны<br>
        &lt;--#endif --&gt;</b><br>
        &nbsp;<br>
        Условие - это либо строка, которая
        является истинной, если она непустая,
        или набор операторов сравнения строк.
        Операторами могут быть <i>=</i>, <i>!=</i>, <i>&lt;</i>,
        <i>&lt;=</i>, <i>&gt;</i> и <i>&gt;</i>. Если вторая
        строка заключена в слэши (&quot;/&quot;), то
        условие истинно, если в первой строке
        встречается хоть одно вхождение второй
        строки. Можно объединять несколько
        операторов сравнения с помощью
        операторов <i>&amp;&amp;</i> (&quot;AND&quot;) и <i>||</i>
        (&quot;OR&quot;). Для группирования условий
        используются скобки. Пример:<br>
        &nbsp;<br>
        <b>Вы пользуетесь браузером<br>
        &lt;!--#if expr=&quot;$HTTP_USER_AGENT=/MSIE/ ||<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        $HTTP_USER_AGENT=/Microsoft/&quot; --&gt;<br>
        Microsoft Internet Explorer<br>
        &lt;!--#elif expr=&quot;$HTTP_USER_AGENT=/Opera/&quot; --&gt;<br>
        Opera<br>
        &lt;!--#elif expr=&quot;$HTTP_USER_AGENT=/Mozilla/&quot; --&gt;<br>
        Netscape Navigator<br>
        &lt;!--#else --&gt;<br>
        неизвестной мне марки<br>
        &lt;!--#endif --&gt;</b><br>
        &nbsp;<br>
        Такой фагмент выведет:<br>
        &nbsp;<br>
        <center><i>Вы пользуетесь браузером Microsoft
        Internet Explorer</i></center><br>
        Ну что, насколько меньше этот фрагмент
        скрипта на Java, который делает то же
        самое? А главное это то, что всеми этими
        условиями занимается сервер, а
        посетителю страницы выдаётся готовый
        результат - и он, в отличие от случая с
        JavaScript, когда он может посмотреть код
        скрипта, даже не знает, что что-то
        делалось со страницей.</font>
      </blockquote>
      </span>
      <p><font size="2" face="Verdana">Поэкспериментируйте с
      SSI - и через некоторое время вы увидите,
      как он облегчает жизнь. Размеры страниц
      поуменьшатся за счёт того, что вы
      избавитесь от повторения общих для всех
      страниц фрагментов, да и затраты времени
      на изменения в страницах будут поменьше.</font>
      <p><font size="2" face="Verdana">Единственное, о чём
      стоит помнить, так это о том, что лучше не
      использовать SSI-команды при создании
      страниц в редакторах типа Front Page - они их
      обычно не понимают и выкидывают, и о том,
      что одну SSI-команду нельзя вызвать из
      другой (как нельзя вызвать SSI-команду из
      скрипта, и (скажу, забегая вперёд) скрипт
      из скрипта).</font>
      <p><font size="2" face="Verdana">Работу страниц с SSI-командами
      невозможно проверить, открыв их в вашем
      браузере просто с диска компьютера. SSI-команды
      понимает только вебсервер - поэтому для
      проверки их работоспособности вам
      придётся  установить
      вебсервер для тестирования сайта на
      свой домашний компьютер.</font></p>

      <p>
<?php
echo '&laquo; <a href="/work/?">В Раздел</a>';
include 
'../../style/foot.php';
?>
Онлайн: 0
Реклама