Вход Регистрация
Файл: servises/ssi.php
Строк: 136
<?
require'../shaxty.php'// waphp.ru - закрытый клуб вап мастеров!
$align='left';
check_login();
$title='Информация о SSI';
include_once (
H.'shaxty/head.php');
echo 
'<br />';
?>


      <p>Если вы
      прогуляетесь по страницам этого сайта,
      вы увидите, что меняются только тексты
      страниц и их заголовки - а всё остальное -
      детали оформления, меню навигации, форма
      для комментариев и строка поиска - всё
      это остаётся неизменным.
      </p>
      <p>На этом сайте около
      сотни различных страниц и все они
      оформлены одинаково. Но посмотрите, что
      пришлось бы сделать, если бы было нужно,
      например, изменить вид меню навигации.
      Если всё пришлось бы делать &quot;по
      старинке&quot;, было бы нужно открыть
      каждый из сотни файлов, заменить один
      фрагмент HTML-кода другим и затем закачать
      изменённые страницы на сайт. Однако на
      этом сайте &quot;всего лишь&quot; несколько
      мегабайт текста. А что пришлось бы
      делать, если размер сайта измерялся бы
      сотнями мегабайт?
      <p>У всех, кто когда-либо
      начинал более или менее серьёзно
      заниматься созданием вебстраниц,
      обязательно возникала мысль - а как
      неплохо бы было, если бы повторяющиеся
      фрагменты HTML-кода можно было бы писать
      только по одному разу - чтобы затем они
      вставлялись бы в нужные места страниц
      автоматически. Самые продвинутые
      пытались воспользоваться Java-скриптами,
      чтобы добиться этого - но тогда страницы
      начинали растекаться жиром на десятки
      килобайт, а браузеры посетителей
      захлёбывались в сложном и обьёмном коде
      скриптов.
      <p>Между тем решение
      проблемы давно уже было - правда
      клиентам бесплатных хостингов оно не
      было доступно. На Webservis.ru оно есть и зовут
      его &quot;SSI&quot; - &quot;Server Side Includes&quot;.
      Перевести это можно, в принципе, как «сборкой
      страниц занимается вебсервер».
      <p>Назначение технологии
      SSI - указать вебсерверу, какой фрагмент
      взять, и куда его приткнуть, прежде чем
      выдать его посетителю страницы. Так, ни
      на одной моей странице нет кода, который
      отвечает за показывание баннера - а вы
      его видите, и не один, а даже два. Просто
      на каждой из моих страниц вверху и внизу
      есть фрагмент <b>&lt;!--#include virtual=&quot;fragments/banner.html&quot;--&gt;</b>.
      Когда ваш браузер попросил у вебсервера
      Webservis.ru страницу, на которой вы сейчас
      находитесь, сервер обнаружил эту метку в
      тексте страницы. В ней содержится
      указание взять из подкаталога Fragments файл
      banner.html и вставить его вместо этой метки.
      Поэтому если мне вдруг когда нибудь
      захочется поменять баннер, мне будет
      достаточно изменить один только файл
      banner.html - а менять все страницы не
      понадобится совершенно.
      <p>Ещё одно возможное
      применение SSI - с его помощью можно
      выводить различную информацию о
      странице. Так, команда <b>&lt;!--#flastmod file=&quot;creating-ssi.shtml&quot;--&gt;</b>
      вставит в текст страницы число, когда
      эта страница последний раз обновлялась.
      Точно так же можно выводить название
      этой страницы и путь к ней, её размер и
      много чего ещё.
      <p>Но давайте по порядку.
      Итак, как вы могли увидеть, SSI-команды
      вставляются в текст страниц, как обычные
      комментарии, внутри тэга <nobr><b>&lt;!--#SSI-команда=&quot;параметры&quot;
      --&gt;</b></nobr>. Единственное отличие от
      простого комментария - в начале должен
      обязательно присутствовать символ &quot;#&quot;.
      <p>Вот список основных SSI-команд:</p>
      <span align="left">
      <h3>#include file</h3>
      <blockquote>
        Вставляет файл из той
        же самой папки. Так, <nobr><b>&lt;!--#include file=&quot;file.txt&quot;&gt;</b></nobr>
        укажет серверу взять файл file.txt и
        вставить его содержимое в страницу
      </blockquote>
      <h3>#include virtual</h3>
      <blockquote>
        В отличие от
        предыдущей команды эта позволяет
        вставлять файлы из других папок. Так, <nobr><b>&lt;!--#include
        virtual=&quot;kakoj/nibud/file.txt&quot;&gt;</b></nobr> укажет
        серверу взять файл file.txt из подпапки nibud
        папки kakoj. Как видите, здесь
        используются относительные пути к
        файлам.
      </blockquote>
      <h3>#fsize file</h3>
      <blockquote>
        Выводит размер файла (формат
        числа указывается командой config sizefmt).
        Так <nobr><b>&lt;!--#fsize file=&quot;creating-ssi.shtml&quot;&gt;</b></nobr>
        выведет значение размера cтраницы, на
        которой вы сейчас находитесь - 26,576 байт.
      </blockquote>
      <h3>#flastmod file</h3>
      <blockquote>
        Выводит дату
        последнего обновления файла (формат
        числа указывается с помощью директивы
        config datefmt).
      </blockquote>
      <h3>#exec cmd</h3>
      <blockquote>
        Запускает указанную
        программу и вставляет выведенные ей
        строки в текст страницы. Например, <b>&lt;!--#exec
        cmd=&quot;date&quot;--&gt;</b>
      </blockquote>
      <h3>#exec cgi</h3>
      <blockquote>
        Запускает указанный
        скрипт и вставляет результат его
        работы в страницу. Но лучше пользуйтесь
        для этого директивой 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 сменится
        другой.
      </blockquote>
      <h3>#config errmsg</h3>
      <blockquote>
        Вы, наверное, нередко
        встречали фразу &quot;[an error occurred while processing
        this directive]&quot; на некоторых недоделанных
        или неправильно работающих сайтах. Эту
        фразу вебсервер выводит тогда, когда он
        не может запустить скрипт, если в том
        содержатся ашипки или очепятки или же
        этого скрипта просто не существует.
        Команда config errmsg позволяет заменить эту
        непонятную фразу на что-нибудь более
        вменяемое. Советую вставлять первой
        строкой во все страницы, которые вы
        создаёте, SSI-команду <b>&lt;!--#config errmsg=&quot;[При
        открытии страницы произошла ошибка.
        Пожалуйста, сообщите об этом хозяину
        сайта.]&quot;--&gt;</b>
      </blockquote>
      <h3>#config timefmt</h3>
      <blockquote>
        Указывает серверу, в
        каком формате выдавать дату командой
        flastmod. По умолчанию это что-то вроде &quot;<cite>Sunday,
        10-Sep-2000 17:58:59 Московское время (лето)</cite>&quot;.
        Вам же может захотеться получить дату в
        виде день/месяц/год. Для этого с
        командой config timefmt используется нужное
        сочетание следующих возможных
        параметров:<br>
        &nbsp;
        <table border="0" cellpadding="3" cellspacing="1" bgcolor="#003399">
          <tbody>
            <tr bgcolor="#FFFFFF">
              <td><b>Формат</b>&nbsp;&nbsp;</td>
              <td><b>Описание</b>&nbsp;&nbsp;</td>
              <td><b>Пример</b>&nbsp;&nbsp;</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%a</td>
              <td>Краткое название
                дня недели</td>
              <td>Mon</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%A</td>
              <td>Полное название
                дня недели</td>
              <td>Monday</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%b</td>
              <td>Аббревиатура
                названия месяца</td>
              <td>Dec</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%B</td>
              <td>Полное название
                месяца</td>
              <td>December</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%d</td>
              <td>День месяца</td>
              <td>01 (не 1)</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%D</td>
              <td>Дата в формате
                &quot;%m/%d/%y&quot;</td>
              <td>12/31/99</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%e</td>
              <td>День месяца</td>
              <td>13</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%H</td>
              <td>Часы в 24-часовом
                формате</td>
              <td>13</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%I</td>
              <td>Часы в 12-часовом
                формате</td>
              <td>01</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%j</td>
              <td>День года</td>
              <td>235</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%m</td>
              <td>Номер месяца</td>
              <td>01</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%M</td>
              <td>Минуты</td>
              <td>03</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%p</td>
              <td>AM/PM (до полудня/после)</td>
              <td>AM</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%r</td>
              <td>Время в формате
                &quot;I:M:S p&quot;</td>
              <td>11:35:46 PM</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%S</td>
              <td>Секунды</td>
              <td>34</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%s</td>
              <td>Время в секундах
                с 01.01.1970</td>
              <td>957228726</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%T</td>
              <td>Время в формате
                &quot;%H:%M:%S&quot;</td>
              <td>14:05:34</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%U</td>
              <td>Неделя года</td>
              <td>16</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%w</td>
              <td>Номер дня недели</td>
              <td>4</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%y</td>
              <td>Год в формате ГГ</td>
              <td>99</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%Y</td>
              <td>Год в формате
                ГГГГ</td>
              <td>1999</td>
            </tr>
            <tr bgcolor="#FFFFFF">
              <td>%Z</td>
              <td>Временная зона</td>
              <td>MSK</td>
            </tr>
          </tbody>
        </table>
        <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>.
      </blockquote>
      <h3>#config sizefmt</h3>
      <blockquote>
        Изменяет формат вывода
        значения размера файла. <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>)
      </blockquote>
      <blockquote>
        Обратите внимание на
        то, что команды #config sizefmt и #config timefmt
        влияют на все связанные с ними SSI-команды
        от того места, откуда они были вызваны и
        до самого конца страницы. Поэтому
        каждый вызов команд #flastmod и #fsize
        снабжайте своей командой #config - так
        проще и спокойнее.
      </blockquote>
      <h3>#printenv</h3>
      <blockquote>
        Выводит список так
        называемых &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>, отличается на
        добрых две трети. Учитывайте это!
      </blockquote>
      <h3>#echo var</h3>
      <blockquote>
        Выводит знчение
        определённой переменной. Например, <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>.
      </blockquote>
      <h3>#set var value</h3>
      <blockquote>
        Присваивает новое
        значение переменной. Например, <b>&lt;!--#set
        var=&quot;SERVER_ADMIN&quot; value=&quot;новый@адрес.ru&quot;--&gt;</b>
      </blockquote>
      <h3>#if, #elif, #else и #endif</h3>
      <blockquote>
        Применяется для
        управления выводом страницы по
        заданному условию. Синтаксис
        используется такой:<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, когда он может посмотреть код
        скрипта, даже не знает, что что-то
        делалось со страницей.
      </blockquote>
      </span>
      <p>Поэкспериментируйте с
      SSI - и через некоторое время вы увидите,
      как он облегчает жизнь. Размеры страниц
      поуменьшатся за счёт того, что вы
      избавитесь от повторения общих для всех
      страниц фрагментов, да и затраты времени
      на изменения в страницах будут поменьше.</p>
      <p>Единственное, о чём
      стоит помнить, так это о том, что лучше не
      использовать SSI-команды при создании
      страниц в редакторах типа Front Page - они их
      обычно не понимают и выкидывают, и о том,
      что одну SSI-команду нельзя вызвать из
      другой (как нельзя вызвать SSI-команду из
      скрипта, и (скажу, забегая вперёд) скрипт
      из скрипта).</p>
      <p>Работу страниц с SSI-командами
      невозможно проверить, открыв их в вашем
      браузере просто с диска компьютера. SSI-команды
      понимает только вебсервер - поэтому для
      проверки их работоспособности вам
      придётся  установить
      вебсервер для тестирования сайта на
      свой домашний компьютер.</p>
      <!-- Основной текст кончается здесь -->
      <p>
<?
echo '<br />';
echo 
$div1.'<a href="/servises/">Сервисы</a>'.$div9;
include_once (
H.'shaxty/foot.php');
?>
Онлайн: 1
Реклама