Что такое код ssi


Содержание

«Server S >

Это сделает ваши страницы живыми. Это поможет легко обновлять ваши сайты. CGI-скрипты смогут вставлять HTML-код на страницы сайта. Все это может стать реальностью с применением «Server Side Includes, так же известных как SSI.

«Includes» (англ. «включать») означает, что SSI добавляет что-то на ваши страницы.

«Server Side» означает то, что SSI обслуживаются сервером, а не браузером. В то время как сервер посылает вашу страницу в браузер посетителя, он сканирует страницу, ища специальные теги, которые сообщают о том, что надо включать вместо них. Когда он находит такие теги, он включает блоки кода вместо этого тега и отсылает результат.

Где Вы бы не использовали один и тот же код на страницах сайта (такой как панели навигации, формы подписки и т.д.), используйте SSI и Вам придется поменять только один файл, чтобы внести изменения на все страницы, где используется SSI.

Это просто!

Но если это так просто, то почему не каждый использует SSI? Ответов два: 1) эта процедура занимает несколько наносекунд у Вашего сервера на сканирование и добавление; 2) не каждый знает о том как использовать SSI.

Большинство хостинговых компаний позволяет использовать SSI. Обычным требованием в таком случае является расширение .shtml для таких страниц. Это вызвано тем, что использование SSI занимает часть ресурсов сервера и определенный период времени. Таким образом Вы будете использовать .shtml расширение для SSI-страниц и расширения .html and .htm для всех остальных.

Если Вы не знаете поддерживает ли сервер SSI, проделайте простой тест.

Создайте 2 файла. Назовите первый mytest.shtml а второй — myssi.txt

Текст файла mytest.shtml:

Текст файла myssi.txt:

Загрузите эти два файла на сервер и посмотрите файл mytest.shtml в браузере. Если Вы видите фразу «It goes here. Here I am!», то это значит, что сервер поддерживает SSI.

Заметьте, что теги SSI находятся внутри тегов комментария. Некоторые серверы будут работать нормально если есть пробел после . Но некоторые серверы будут давать ошибку. Пример:

возможно будет работать на некоторых серверах, но не на всех. Чтобы быть уверенным в работоспособности SSI пишите так:

А теперь мы покажем примеры того, как правильно использовать SSI:

Замените подчеркивание на имя файла который Вы хотите включить на страницу. Имя файла может быть любым (обычно расширения таких файлов .txt .html), но это должен быть текст. Это может быть простой текст, код HTML, JavaScript, и т.п. Однако нельзя использовать графические и звуковые файлы.

Файл который Вы включаете может иметь HTML код для графики и звука, но вы не можете вставлять их напрямую. Файл должен находится в той же директории что и .shtml страница.

(2) Тег:

Тоже самое что и file=»__________» за исключением того что файл может находится в другой директории.

(3) Тег:

Замените подчеркивание на имя CGI-скрипта. Имя файла может быть любым, но не допускается наличие адреса http://. . CGI-скрипт должен возвращать текст, но этот тектс может быть JavaScript или HTML-код для графики и звука или другого кода, который обрабатывается браузером

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

Так же вы можете добавлять результаты работы CGI-скриптов, включая счетчики, баннеры, новости и погоду с других сайтов и многое другое, что умеют делать CGI-скрипты.

Вот еще один пример:

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

6.4 Учебное пособие Apache: введение в технологию Server Side Includes

Перевод

Технология Server-side includes предоставляет средства для добавления динамического содержания к уже существующим документам.

Введение

Связанные модули
MOD INCLUDE
MOD CGI
MOD EXPIRES
Связанные директивы
OPTIONS
XBITHACK
ADDTYPE
SETOUTPUTFILTER
BROWSERMATCHNOCASE

Эта статья описывает технологию Server Side Includes, которую обычно называют просто SSI. В этой статье я расскажу о конфигурировании вашего сервера для разрешения SSI, и объясню некоторые основные методики SSI для добавления динамического содержания к уже существующим HTML-страницам.

В последней части статьи мы поговорим о расширенных возможностях, которые можно выполнять с помощью SSI, т.е. условные выражения в ваших директивах SSI.

Что такое SSI?

Технология SSI (Server Side Includes) – это директивы, которые помещаются в HTML-страницы и оцениваются на сервере, когда обращаются к страницам. Она позволяет вам добавлять динамически сгенерированное содержание в существующую HTML-страницу без необходимости обработки всей страницы через CGI-программу или другую динамическую технологию.

Решение о том, когда использовать SSI, и когда ваша страница полностью генерируется какой-либо программой, состоит обычно в вопросе о том, насколько страница является статической, и сколько раз необходимо проводить повторную оценку, когда обращаются к странице. Технология SSI великолепный способ для добавления маленьких кусочков информации, например, текущего времени. Однако, если большая часть вашей страницы генерируется во время обращения к ней, то вам лучше поискать другое решение.

Конфигурирование сервера для разрешения SSI

Чтобы разрешить SSI на вашем сервере, вы должны иметь следующую директиву либо в файле httpd.conf, либо в файле .htaccess:


Options +Includes

Это сообщает серверу Apache, что вы хотите разрешить обработку в файлах директив SSI. Обратите внимание на то, что большинство конфигураций содержат многочисленные директивы OPTIONS, которые могут преодолевать друг друга. Вам, возможно, понадобится Options для определения папки, где вы хотите активизировать SSI, чтобы обеспечить работу этой технологии.

Не любой файл анализируется на наличие директив SSI. Вы должны сообщить серверу Apache, какие файлы следует анализировать. Существует два способа сделать это. Вы можете сообщить серверу Apache, чтобы он анализировал любой файл с особым расширением, таким как .shtml, с помощью следующих директив:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

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

Другой метод – использование директивы XBITHACK:

XBitHack on

Директива XBITHACK просит сервер Apache анализировать файлы на наличие директив SSI, если они имеют исполняемый битовый набор. Таким образом, для добавления директив SSI в существующую страницу, вам следует только сделать файл исполняемым с использованием chmod, не менять название файла.

chmod +x pagename.html

Краткий комментарий о том, что не делать. Вы можете случайно увидеть рекомендации людей о том, чтобы вы только сообщили серверу Apache анализировать все файлы .html на наличие SSI, так что бы вам не надо путаться с названиями файлов .shtml. Эти люди, скорее всего, не слышали о директиве XBITHACK. Следует помнить, что, выполняя такой совет, вы требуете, чтобы сервер Apache просматривал каждый единичный файл, который посылается клиентам, даже если они не содержат каких-либо директив SSI. Это может привести к замедлению работы, и это – не очень хорошая идея.

Конечно, в Windows нет исполняемых битов для установки, что ограничит немного ваши варианты. В своей конфигурации по умолчанию сервер Apache не отсылает последнюю дату обновления или заголовков HTTP длины содержания на SSI-страницах, так как эти значения трудны в расчете для динамического содержания. Это может помешать кешированию вашего документа, и в результате замедлит работу клиента. Есть два способа решить эту задачу:

  1. Используйте конфигурацию XBitHack Full. Она потребует у сервера Apache определить последнюю дату обновления с помощью просмотра только даты создания запрашиваемого файла, игнорируя дату модификации любых включаемых файлов.
  2. Используйте директивы, предоставляемые модулем MOD EXPIRES, для установки явного времени устаревания ваших файлов, что позволит обозревателям и прокси-серверам знать, что они доступны для кеширования.

Основные директивы SSI

Директивы SSI имеют следующий синтаксис:

Они форматируются подобно комментариям в HTML, так что если у вас SSI активизирован некорректно, то обозреватель будет их игнорировать, но они все же останутся видимыми в HTML-источнике. Если у вас технология SSI сконфигурирована правильно, то директивы будут заменяться на их результаты.

Элемент может быть одним из перечня, который мы обсудим подробнее далее. Сейчас посмотрите на примеры того, что вы можете делать с технологией SSI.

Текущая дата

Элемент echo только выводит значение переменной. Существует ряд стандартных переменных, которые включают набор переменных окружения, доступные в CGI-программах. Кроме этого, вы можетет определить свою собственную переменную с помощью элемента set.

Если вы не хотите формат по умолчанию, в котором выводится дата, то можно использовать элемент config с атрибутом timefmt для модификации такого формата.

Today is

Дата обновления файла

This document last modified

Этот элемент тоже подчиняется конфигурациям формата timefmt.

Включение результатов CGI-программы

Это – одно из обычных использований технологии SSI – вывод результатов CGI-программы, например, для любимой всеми программы счетчика посетителей («hit counter»).

Дополнительные примеры

Далее приводится ряд примеров того, что вы можете делать в ваших HTML-документах с технологией SSI.

Когда был модифицирован документ?

Выше мы упоминали о том, что вы можете использовать SSI для информирования пользователя о том, когда документ был изменен в последний раз. Однако, фактический метод для осуществления этого остался не раскрытым. Следующий код, размещенный в вашем HTML-документе, поместит временную метку на вашу страницу. Конечно, вы должны корректно активизировать технологию SSI, как обсуждалось выше.

This file last modified

Конечно, вам нужно будет заменить ssi.shtml на реальное название файла, на который вы ссылаетесь. Может возникнуть проблема, если вы лишь ищите сгенерированную часть кода, которую вы можете вставить в любой файл, так что вместо этого вам, возможно, захочется использовать переменную LAST MODIFIED:

This file last modified

Для получения более подробной информации по формату timefmt, обратитесь к вашему любимому поисковому сайту и поищите strftime. Синтаксис – такой же.

Включение стандартного нижнего колонтитула (footer)

Если вы управляете сайтом, который содержит множество страниц, то вы можете обнаружить, что изменения для всех таких станиц может стать серьезной головной болью, в частности, если вы пытаетесь поддерживать стандартный вид для всех страниц. Использование файла для верхнего (header) и/или нижнего (footer) колонтитула может уменьшить трудности такого обновления. Вы лишь должны сделать один файл нижнего колонтитула (footer), и затем включить его в каждую страницу SSI-командой include. Элемент include может определить, какой файл включить, с помощью атрибутов: либо file, либо virtual. Атрибут file – это путь к файлу, относительный к текущей папке. Это значит, что он не может быть абсолютным путем к файлу (начинающийся с /), и не может содержать ../ как часть пути. Атрибут virtual, возможно, более полезен, и должен определять адрес URL, относительный к извлекаемому документу. Он может начинаться с /, но должен быть на том же сервере, где расположен данный файл.

Я буду часто комбинировать эти два способа, размещая директиву LAST MODIFIED внутри файла нижнего колонтитула (footer), включаемого в файл. SSI-директивы могут комбинироваться во включаемом файле, и включения могут вкладываться друг в друга, т.е., включаемый файл может включать другой файл и т. д.


Что еще я могу сконфигурировать (config)?

Дополнительно к конфигурированию формата времени с помощью config, вы можете использовать config для следующего. Обычно, когда происходит сбой в работе SSI-директивы, вы получаете сообщение:

[an error occurred while processing this directive]

Если вы хотите изменить это сообщение на другое, то вы можете сделать это с помощью атрибута errmsg элемента config:

Надеюсь, что конечный пользователь никогда не увидит такое сообщение, так как вы решить все проблемы до того, как запустите свой сайт. (Хорошо?).

Вы можете с помощью config конфигурировать формат, в котором выводится размеры файлов с помощью атрибута sizefmt. Вы можете определить bytes для полного подсчета в байтах или в abbrev для сокращенного числа в Кб или Мб, соответственно.

Исполняемые команды

Я надеюсь, что через некоторое время в следующие месяцы напишу статью об использовании SSI с маленькими CGI-программами. Ниже показано, что вы можете делать с элементом exec. Вы фактически можете с технологией SSI выполнить команду, используя оболочку (/bin/sh, если быть точным – или оболочку DOS, если у вас Win32). Следующие примеры предоставляют вам перечень директив.

Или для Windows:

Вы могли бы заметить некоторую странность форматирования этой директивы для Windows, так как вывод команды dir содержит строку » «, что сбивает обозреватели.

Обратите внимание на то, что эта особенность очень опасна, так как будет выполнятся любой код, который включен в тег exec. Если у вас ситуация, когда пользователи могут редактировать содержание на ваших веб-страницах, например, на «гостевой странице», убедитесь, что вы отключили эту характеристику. Вы можете разрешить использование SSI, но без функции exec, установив аргумент IncludesNOEXEC для директивы Options.

Расширенные способы технологии SSI

Дополнительно к приведенному содержанию, SSI на сервере Apache предоставляет вам возможность определять переменные и использовать эти переменные в сравнениях и условных операторах.

Предупреждение

Большинство из обсуждаемых здесь характеристик доступны только для серверов Apache 1.2 или выше. Конечно, если вы не используете Apache 1.2 или выше, то вам нужно обновить его немедленно. Делайте. Мы ждем.

Определение переменных

Используя директиву set, вы можете определить переменную для ее использования позже. Нам это понадобится позже при обсуждении, так что мы поговорим об этом здесь. Синтаксис определения следующий:

Дополнительно к определению значений буквально, вы можете использовать любые другие переменные, включая переменные окружения или переменные, обсуждаемые выше (подобно LAST_MODIFIED, например), для предоставления значения переменным. Вы определяете, что что-то является переменной, а не строка литералов, с помощью знака доллара ($) перед именем переменной.

Для использования символа доллара в значение переменной, вам необходимо использовать обратную косую черту для обхода знака доллара.

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

Илон Маск рекомендует:  Что такое код asp querystring

Условные выражения

Теперь, когда мы имеет переменные и способны определять и сравнивать эти значения, мы можем использовать их для выражения условий. Это позволяет технологии SSI быть в своем роде крошечным языком программирования. Модуль MOD INCLUDE предоставляет структуру if, elif, else, endif для создания условных выражений. Это позволяет вам эффективно генерировать несколько логических страниц из одной реальной страницы.

Структура этой условной конструкции:

Условие проверки может быть любого типа из логического сравнения: либо сравнение значений друг с другом, либо проверка на «правду» («truth») определенного значения. (Данная строка является правдой, если она не пустая.) Для получения полного перечня операторов сравнения, доступных вам, смотрите документацию модуля MOD INCLUDE. Здесь приводятся примеры того, как можно использовать эту конструкцию.

В вашем конфигурационном файле вы можете ввести следующие строки:

BrowserMatchNoCase macintosh Mac
BrowserMatchNoCase MSIE InternetExplorer

Это установит переменные окружения “Mac” и “InternetExplorer” как «true», если клиент работает с Internet Explorer на Macintosh.

Затем, в вашем документе с активизированной технологией SSI вы можете ввести следующие строки:

Apologetic text goes here Cool JavaScript code goes here

Обратите внимание на то, что я не имею ничего против IE на Macs – я просто боролся в течение нескольких часов на прошлой неделе, пытаясь заставить работать JavaScript в обозревателе IE на Mac, хотя он работает везде. Вышеуказанное было временным обходным маневром. Любая другая переменная (либо несколько, которые вы определяете, или нормальные переменные окружения) может использоваться в условных выражениях. Со способностью сервера Apache устанавливать переменные окружения с помощью директивы SetEnvIf и другими связанными директивами, эта функциональность может позволить вам привлечь определенную динамическую среду без обращения к CGI.

Заключение

Технология SSI определенно не является заменой для CGI или других технологией, используемыми для генерирования динамических веб-страниц. Однако, это хороший способ добавлять небольшое количество динамического содержания на страницы без выполнения большой дополнительной работы.

Что такое код ssi

SSI-команд насчитывается около десятка, но я расскажу только о самых употребляемых. Самая популярная команда — это команда включения содержимого одного файла в другой:

где include — команда вставки

virtual — параметр, определяющий, как трактовать путь — как абсолютный file или как относительный virtual

«/path/file.ssi» — путь к включаемому файлу

Результатом ее выполнения будет вставка содержимого файла file.ssi в месте появления данной директивы. При просмотре сформированного исходника HTML-файла мы не увидим никаких признаков SSI, т.к. данный механизм действует абсолютно прозрачно для браузеров, они получают исключительно корректный HTML-код.


Следующая команда — это команда установки значения переменной:

где var — команда установки значения переменной

pic — имя переменной

«picture.gif» — значение переменной

В данном случае мы определили переменную с именем pic и присвоили ей строковое значение «picture.gif». Значение переменной pic теперь доступно внутри SSI-вставки, и мы можем его использовать по нашему усмотрению.

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

Перед тем, как показать реальный пример использования переменных в SSI-включениях, я расскажу о некоторых командах, применяемых при работе с переменными. Во-первых, это команда печати значения переменной:

Ее выполнение приведет к тому, что в месте появления команды напечатается значение переменной pic, т.е. «picture.gif».

Переменная может участвовать в выражениях, в этом случае перед ней ставится знак ‘$’, показывающий, что это именно переменная, а не просто текст.

После такого присвоения переменная B будет содержать строку «123456». Если же в текст понадобится просто вставить знак ‘$’ или какой-нибудь из других специальных знаков, то его нужно предварить слешем, вот так: ‘$’. В некоторых случаях для избежания двусмысленности значение переменной может быть заключено в фигурные скобки: «$».

Более сложное применение переменных возможно с использованием условных операторов, имеющих следующую форму написания:

где condition — условие для сравнения

В зависимости от результатов проверки мы можем подставить тот или иной фрагмент кода. Допустим, мы можем проанализировать тип браузера пользователя и в зависимости от этого выдать либо код для Netscape Navigator-а, либо Internet Explorer-а. Это может оказаться полезным в некоторых случаях, когда невозможно сделать страничку, которая корректно отображалась бы в обоих браузерах. Вот пример использования условного оператора:

Что угодно, но не понедельник.

В данном случае условием проверки является существование переменной $Monday и, в зависимости от этого, подстановка того или иного HTML-кода.

Теперь давайте рассмотрим реальный пример применения SSI для формирования сложного документа из нескольких SSI-вставок.

Вначале напишем текст основного HTML-документа, полагая, что SSI-вставки находятся в каталоге /ssi:

Что такое код ssi

Дурным стилем сайтостроительства считается наличие в документе гиперссылок на этот же документ. Ссылаться на самого себя неразумно — пользователь от нажатия на гиперссылку ожидает, что загрузится другая страница, а также такого рода ссылки доставляют большие неудобства пользователям каналов с низкой пропускной способностью. Такие ссылки на себя часто получаются при включении колонтитулов. Для того чтобы избежать таких ссылок, оформляйте каждый пункт меню в колонтитулах следующим образом: Данный SSI-код используется на сайте http://my-elecon.ru.

Другой не менее важный SSI-код применяется для организации версии страниц для печати. Версия страницы сайта для печати отличается от обычной страницы отсутствием колонститулов, навигации, баннеров и прочей лишней информации. Рассмотрим, как организована версия для печати на примере сайта http://alavus.ru.

При нажатии на гиперссылку «версия для печати» страница, на которой находится пользователь, перегружается. Но поскольку в строке запроса присутствует параметр for_printing, то лишний HTML-код не включается на страницу. Обратите внимание . Это строка запроса CGI-параметров. В обычном случае, у вас никаких параметров, кроме for_printing нет, но когда появляются на сайте CGI-модули, то появляются и дополнительные параметры. Забегая вперед расскажу, как делать «Версию для печати» В CGI-программе. Пока веб-сервер Apache не может обрабатывать на SSI-директивы вывод CGI-программ. Такую возможность обещают в новых версиях Apache. У CGI-программистов есть два пути либо самим разобрать SSI-директивы в файле head.inc либо, что значительно проще, создать ручками файл phead.inc и подключать его в CGI-программах.

Условные операторы записываются следующим образом: Для примера приведу SSI-код для вывода времени последней модификации документа в приемлемом виде. Как вы уже видели, команда выдает совершенно не приемлемую строчку — Monday, 26-Feb-2001 19:25:58 Московское время (зима), для размещения ее на солидном веб-сайте. Нам бы хотелось получить что-нибудь, вроде 26 Февраля 2001 года. Для этого существует команда config с параметром timefmt, которая задает формат вывода даты. Например, в нашем случае нам требуется следующий вариант , тогда результат будет 26 February 2001. Но это пока все равно не то, что бы нам хотелось. Для определения месяца мы воспользуемся условными операторами. Вот, как будет выглядеть этот код: Соответственно, чтобы получить дату в формате 26 Февраля 2001.
Вот полный список значение параметра timefmt:

Формат Описание Пример
%a Аббревиатура названия дня недели Sun
%A Полное название дня недели Sunday
%b Аббревиатура названия месяца Jan
%B Полное название месяца January
%d День месяца 01 (не 1)
%D Дата в формате «%m/%d/%y» 01/31/90
%e День месяца 1
%H Часы в 24-часовом формате 13
%I Часы в 12-часовом формате 01
%j День года 235
%m Номер месяца 01
%M Минуты 03
%p AM|PM AM
%r Время в формате «%I:%M:%S %p» 11:35:46 PM
%S Секунды 34
%s Время в секундах с 01.01.1970 957228726
%T Время в формате «%H:%M:%S» 14:05:34
%U Неделя года 49
%w Номер дня недели 5
%y Год в формате ГГ 95
%Y Год в формате ГГГГ 1995
%Z Временная зона MSK

Далее приведены несколько полезных SSI-директив. Допустим, вы распространяете какие-либо утилиты и выкладываете ссылки на файлы для скачивания. Например, такие ссылки вы найдете на сайте http://www.oxygensoftware.com. Для удобства пользователей неплохо было бы указать размер файла и иногда, дату его последней модификации. Каждый раз после выкладывания на сервер новых версий файла, модифицировать самому ручками все размеры и даты долго и мучительно. Server Side Includes приходят на помощь.

Прозрачный gif-файл
Дата модификации:
Размер: байта
Если у вас файлы больших размеров, то информацию лучше выводить в килобайтах. Для этого установите формат вывода размера файла следующим образом.
При возникновение какой-либо ошибки, например, при попытки включить в HTML-документ файл, которого не существует веб-сервер выдаст следующее сообщение:

Сообщение не слишком информативно и пугает пользователя, не так ли? Давайте изменим сообщение об ошибке следующей SSI-директивой
Теперь сообщение об ошибке вылядит так:

Последовательный синхронный интерфейс SSI

Подробное описание протокола / последовательного интерфейса SSI, рекомендации по подключению и общее представление шины RS485. В каких случаях оправдан параллельный интерфейс и когда более оправдано применение последовательного.

Последовательный интерфейс SSI — от А до Я

Несколько слов о параллельном способе передачи данных

В оборудовании (например, промышленных роботах) часто применяются энкодеры с простейшим параллельным интерфейсом, где все биты позиционного значения передаются к контроллеру одновременно и параллельно по многожильному кабелю. Этот вид интерфейса является самым быстрым и при небольшом разрешении датчиков и, соответственно, малым количеством проводов может представлять дешевый способ передачи данных. Однако при большом расстоянии до оборудования (до контроллера) и в случаях, когда необходимо принимать сигналы от нескольких энкодеров с высоким разрешением, прокладка кабелей для каждого датчика в отдельности может быстро достичь очень высоких затрат.

В этом случае решить проблему может применение синхронно-последовательного интерфейса — SSI. В этом методе передачи данных для подключения каждого датчика необходимо лишь две витых пары, т.е. одна для тактового сигнала и вторая для сигнала данных. Для подключения питания требуется (так же как и для параллельного интерфейса) два провода. Специальные дифференциальные драйверы для RS 422/485, которые вырабатывают симметричный выходной сигнал, позволяют передавать сигнал на расстояние до 1200 метров при скорости передачи до 10 Mbit /сек. Это является, для большинства случаев применения, достаточным. Максимальная скорость передачи зависит от длины кабеля.

Описания работы SSI -интерфейса.

При этом виде интерфейса данные о позиционном положении оси датчика передаются синхронно с принятым сигналом такта ( CLOCK ) от системы управления. В состоянии покоя уровень сигнала как на тактовом проводе так и на проводе данных равен 1 ( High ). Как только тактовый сигнал в первый раз в начале каждой тактовой посылки поменяет свой уровень от высокого на низкий находящиеся внутри датчика бит-параллельные данные в параллельно-последовательном преобразователе Input — Latch сдвигового регистра по внутрисхемно выработанному сигналу ( Sload = Shift Load ) «замораживаются». Этим достигается, что данные во время последовательной передачи позиционного значения больше не изменяются. Со следующим перепадом от низкого уровня на высокий начинается передача позиционного значения причем начиная со старшего ( MSB ) бита. С каждым последующим перепадом с низкого на высокий уровень передается следующий более младший бит информации. После передачи последнего, т.е. самого младшего ( LSB ) бита с последним перепадом тактового сигнала от низкого уровня на высокий выход данных устанавливается в Low (конец передачи).

Рис.2 Принцип SSI -передачи.

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

Язык SSI

Содержание:

Язык SSI (от англ. Server Side Includes — Включения на стороне сервера) — это один из вариантов серверных языков программирования. На сегодняшний день он несколько устарел, но иногда еще используется.


В отличие от более популярного языка PHP, SSI проще в освоении и меньше загружает сервер. С его помощью можно реализовать сборку страницы из отдельных блоков, а также задать определенные условия для вывода той или иной информации.

SSI имеет некоторое количество встроенных переменных, которые позволяют работать с временем, куками, адресацией страниц и некоторыми их HTTP-заголовками, а также позволяет пользователю задавать неограниченное количество собственных переменных.

К сожалению, в SSI отсутствует большинство возможностей полноценных современных серверных языков, но, если Вам нужно быстро создать несложный сайт с динамическим выводом контента, то это именно то, что Вам нужно!

Как создать сайт на SSI. Руслан Тертышный

Язык: Русский Формат: Обновлено: 2013-08-06 Автор:

Создать несложный сайт с динамическим выводом контента можно без особых усилий всего за пару дней, обладая знанием языка SSI. Этот язык прост в освоении, поскольку имеет простой синтаксис и небольшое количество команд.

Галерея скриншотов

Тот, кто знает HTML и CSS, может сверстать веб-страничку любой сложности. Если у Вас простой сайт-визитка, то, в принципе, большего Вам и не надо, – главное, чтобы было красиво :).

Но, если планируется, что сайт будет иметь не один десяток страниц, то тут уже перед нами встает проблема: как уследить за тем, чтобы код на всех страничках был одинаковым, а, главное, что будет, если в один прекрасный момент придется менять какие-то нюансы нашего кода?

Согласитесь, ручная обработка пары десятков страниц, для изменения, например, содержимого секции , занятие не из самых приятных… Конечно, Вы можете воспользоваться мощными утилитами для пакетной замены текста, но проще было бы использовать возможности разнообразных серверных языков программирования.

Самым популярным на сегодняшний день является язык PHP. Это практически полноценный язык программирования, который предоставляет богатые функциональные возможности, но у него есть один недостаток – страницы на PHP грузятся почти вдвое дольше, чем на простом HTML.

Если планируется создать сложный Интернет-портал, то без PHP, увы, не обойтись, но для реализации несложных сайтов с динамическим выводом контента некоторые разработчики предпочитают другой язык – SSI.

Расшифровывается название, как Server Side Includes, что на русский можно перевести, как «включения на стороне сервера». Этот язык отличается своей относительной простотой в освоении, а также скоростью обработки. Страницы на SSI собираются примерно на 25–50% быстрее, чем на PHP!

В некоторых случаях они почти не проигрывают по скорости обычному HTML-коду. Но, в то же время, SSI позволяет свести к минимуму дублирование различных фрагментов кода, таких как блоки навигации, шапка и подвал сайта.

По сути, создавая новые странички с контентом на SSI, мы будем записывать в них только нужные значимые данные, например, статьи или обзоры, а остальные фрагменты странички при помощи специальных команд будут сами подгружаться, автоматически формируя привычный нам вид HTML-кода.

Подготовка к созданию сайта на SSI

Итак, мы решились :)… Сейчас мы с Вами в качестве примера создадим небольшой сайт про то, как создавать сайты на SSI ;) Контент для быстроты работы будет позаимствован из всезнающей Википедии, а сам сайт будет создан на чистом HTML и CSS, с использованием мощностей их последней версии (HTML5 и CSS3, соответственно).

Для работы нам потребуется небольшой набор программ:

  • локальный веб-сервер (я использую Денвер) для реализации SSI;
  • текстовый редактор (я использовал AkelPad, но Вы можете выбрать для себя любой другой);
  • веб-браузер для просмотра результатов нашей работы (я верстал сайт под Google Chrome, поэтому рекомендую использовать подобные ему веб-обозреватели для корректного отображения кода упомянутого в данной статье).
Илон Маск рекомендует:  Max - Функция Delphi

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

Для простоты воспроизведения Вами данного урока в оформлении я не использовал никаких картинок, – только чистый код, который мы разместили в двух файлах: index.html и style.css (находятся в архиве в папке «Простой HTML»). В браузере жмем CTRL+U и смотрим исходник странички:

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

Подключение блоков кода посредством SSI

Теперь, внимательно посмотрим на вышеприведенный код и прикинем, какие элементы будут у нас повторяться на всех страницах нашего сайта. По сути, на всех страничках меняется только содержимое тега , все остальное можно вынести и подключать динамически. Для этого в SSI существует простая команда (кстати, аналогичная PHP) – «include»:

На примере данной функции рассмотрим синтаксис SSI. Он, в принципе прост: для предотвращения вывода браузером SSI-включений они экранируются обычными HTML-комментариями, а внутри еще и дополнительным символом «#». Затем идет непосредственно команда и ее атрибуты (почти так же, как в обычных HTML-тегах).

Что касается именно команды «include», то она может иметь один из двух атрибутов: «virtual» и «file». Оба они служат для указания ссылки на нужный документ, текст которого должен быть вставлен, но «file» может содержать только относительный путь, поэтому использование «virtual», как более функционального атрибута, будет предпочтительнее.

Попробуем применить на практике, только что полученные данные. Для этого установим веб-сервер (если Вы его еще не устанавливали) и создадим в папке «home» новую папку с названием нашего сайта (у меня это – ssi.site). В папке сайта создадим еще одну директорию с именем «www» (прочитать подробнее о работе с Денвером можно здесь). В нее мы и будем складывать файлы нашего сайта.

Кстати о файлах… Для работы SSI требуется чтобы они имели расширения .shtml, .shtm или .stm.

Весь код созданной нами странички можно рассовать по трем файлам:

  1. В «header.shtml» разместится код шапки и навигации;
  2. В «general.shtml» будет находиться текст статьи (этот файл мы потом упраздним);
  3. В «footer.shtml» поместим подвал сайта.

Теперь для того чтобы собрать все это в единое целое нам будет достаточно создать четвертый файл index.shtml, который будет отвечать за отрисовку главной страницы сайта, со следующим содержимым:

Таким образом, мы получим следующую структуру документов:

Как видим, SSI посредством всего трех строчек кода позволяет собрать полноценную веб-страницу из заранее подготовленных фрагментов.

Однако, дабы не плодить лишних сущностей, мы можем еще немного оптимизировать код файла «index.shtml», вставив вместо второй директивы содержимое файла general.shtml.

Таким образом, у нас останется всего два файла («хэдэр» и «футер»), которые можно подключать куда угодно, а текст статьи будет помещен непосредственно в вызываемом документе! То есть, окончательный код всех значимых страничек на нашем сайте будет иметь следующий вид:


Что мы выигрываем от этого? А то, что в случае добавления новых пунктов меню или изменений в заголовках/подвалах нам будет достаточно nпоправить всего два файла и их содержимое автоматом будет изменено на всех страницах!

Работа с переменными в SSI

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

Переменная – это заданное пользователем выражение, значение которого может изменяться в зависимости от конкретных условий. Предлагаю Вам рассмотреть принцип создания и использования переменных в SSI на примере реализации тега , который отвечает за заголовок страницы.

Тег этот используется для каждой страницы в блоке , а его, как мы помним, мы вынесли в файл «header.shtml». Сейчас там задан фиксированный заголовок для главной страницы, и он выводится неизменным везде.

Попробуем исправить положение… Как Вы, наверное, догадались содержимое тега нужно заменить переменной. Сделать это очень просто, достаточно вписать в него такие строки:

Синтаксис выражения нам уже знаком, но команды – новые. Здесь основная команда – echo. Она, как и в PHP, служит для вывода любых переменных. Далее мы видим два атрибута. Атрибут «var» нужен для указания имени переменной, которую мы вызываем, и является обязательным.

Атрибут «encoding» – необязательный, но приносит неоценимую помощь тем, кто использует кодировку, отличную от WIN-2151.

По умолчанию, сервер преобразовывает все переменные в вышеуказанную кодировку и на выходе мы получаем английский текст (если он был, то он обычно не меняется) с кракозябрами вместо русских слов :(. Дабы этого не произошло, используем «encoding» со значением «none», тем самым отключая все преобразования!

Однако вызвать, то мы переменную вызвали, но ее пока не существует… Ее нужно еще и объявить. Для этого в самое начало каждой странички с уникальной статьей вставим строку примерно следующего содержания:

Здесь мы видим новую команду – «set». В SSI она служит для объявления пользовательских переменных. Она имеет два обязательных атрибута: уже знакомый нам «var» для указания имени переменной и «value».

Последний нужен для указания значения, которое будет присвоено объявленной переменной при ее вызове с текущей странички. Аналогичные строки вставляем во все значимые странички и в итоге получаем уникальные заголовки для каждой из них:

Пример реализации динамического навигационного меню на SSI

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

Встроенных переменных или, как их еще называют, переменных окружения в SSI не очень много, но для реализации несложных задач – достаточно. Они позволяют работать с адресной строкой, куками, IP-адресами, временем и некоторыми заголовками.

Получить список всех встроенных переменных Вы можете, воспользовавшись командой printenv (то есть, ).

В нашем же случае нам нужна переменная «DOCUMENT_URI», которая отвечает за адрес запрошенной страницы. Для реализации изменений в меню навигации нам нужно придумать алгоритм. Алгоритмов может быть несколько, поэтому программирование – это своего рода искусство :). Я предлагаю следующий алгоритм:

Если мы находимся на определенной странице, то кнопка со ссылкой на эту страницу меняется на обычный блок, оформленный нужным нам образом, иначе кнопка остается со ссылкой, не изменяясь.

На языке SSI это можно выразить следующим условием:

Как видим, здесь мы прописали условие для главной страницы сайта. Синтаксис остается все тот же, но появляются новые команды:

  • if – условный оператор, заменяющий слово «если»;
  • expr – атрибут, при помощи которого можно задать выражение, для которого создается условие;
  • else – условный оператор, который на «человеческий» язык можно перевести, как «во всех остальных случаях». Он позволяет задать действие, которое будет исполняться тогда, когда условия не соответствуют параметрам, заданным в «if» (не путать с оператором «elif», который позволяет задать дополнительное условие);
  • endif – обязательный оператор, который закрывает условие.

Обратите внимание, что в атрибуте «expr» переменные обязательно предваряются знаком доллара («$»), как в PHP.

Итак, при помощи вышеописанной конструкции мы задали условие, при котором изменяется не только стилевой класс, но и вообще тип элемента, точнее в зависимости от ситуации выводится один из двух элементов: либо ссылка, либо обычный текстовый блок.

Нам остается прописать такие же условия для каждой кнопки меню (оно у нас находится в блоке в файле header.shtml), и мы получим динамическую навигацию на всем сайте:

Манипуляции со временем в SSI

Что удобно делать в SSI, так это производить разнообразные манипуляции со временем. Примерами таких действий могут быть:

  1. Вывод текущей даты и времени Вашего часового пояса в заданном формате.
  2. Вывод времени по Гринвичу.
  3. Вывод даты последней модификации документа.

Для вывода те кущей даты и времени нам достаточно воспользоваться встроенной переменной «DATE_LOCAL»:

Вывод будет осуществлен в формате: день (по английски), число-сокращенное название месяца-год часы:минуты:секунды часовой пояс. Однако этот формат легко настроить под свои нужды, используя команду «config» с атрибутом «timefmt».

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

Результат будет примерно таким: 2013-08-01, 10:56:22. Как нетрудно догадаться, большие и маленькие буквы после значка «%» отвечают за вывод той или иной части даты, и, по сути, являются сокращением от английских названий этих частей.

Соответственно, большие буквы обозначают полный формат (например, для года %Y (сокр. от «year») это будет – 2013), а маленькие – сокращенный (%y выведет только число «13»).

Фрагменты можно разделять любыми знаками и символами, что делает настройку вывода даты максимально гибкой. Если Вы хотите больше узнать о возможностях настройки формата вывода даты, советую Вам почитать статью на Citforum.ru.

А мы двигаемся дальше и следующей командой, с которой ознакомимся, будет «flastmod». Она предназначена для автоматического вывода даты последнего обновления страницы. К этой функции тоже можно применять любое форматирование, как было описано выше и общий ее вид примерно следующий:

Если Вы внимательно читали статью, то помните, что атрибут «virtual» указывает путь к файлу, который требует определенной обработки. Здесь мы используем его для тех же целей – указания адреса файла, дату последней модификации которого мы хотим вывести.


Причем, атрибут «virtual» может содержать не только реальные адреса, но и переменные. Это дает нам возможность, например, динамически выводить дату последнего изменения страниц при помощи такого кода:

Применив эти знания на практике, мы можем, например, снабдить подвал нашего сайта (файл footer.shtml) полезной информацией:

Немного поработав с форматированием текста, мы можем получить примерно такой итоговый вариант:

Достоинства и недостатки технологии SSI

  • простота освоения;
  • небольшая нагрузка на сервер;
  • удобно реализовываются некоторые функции;
  • поддержка условий;
  • поддержка переменных (в том числе и переменных окружения).

Минусы:

  • нет поддержки циклов;
  • нет возможности работы с файлами;
  • необходимость использования специфического расширения файлов.

Выводы

В свое время SSI был прорывом, но сейчас его почти вытеснил PHP. Однако, несмотря на это, некоторые сайты до сих пор используют данный язык, например, в связке с CGI-скриптами.

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

Что такое код ssi

config — контролирует различные аспекты сканирования. Его атрибутами могут быть:

  • errmsg — устанавливает сообщение, выводящееся при возникновении ошибки; в большинстве случаев целесообразно установить в пустую строку;
  • sizefmt — устанавливает формат, в котором будет выводиться размер файла.
  • timefmt — устанавливает формат, в котором будет выводиться дата. Формат соответствует передаваемому библиотечной функции strftime;

Переменные для sizefmt:

Переменные для timefmt:

Формат Описание Пример
%a Краткое название дня недели Mon
%A Полное название дня недели Monday
%b Аббревиатура названия месяца Dec
%B Полное название месяца December
%d День месяца 01 (не 1)
%D Дата в формате «%m/%d/%y» 12/31/99
%e День месяца 13
%H Часы в 24-часовом формате 13
%I Часы в 12-часовом формате 01
%j День года 235
%m Номер месяца 01
%M Минуты 03
%p AM/PM (до полудня/после) AM
%r Время в формате «I:M:S p» 11:35:46 PM
%S Секунды 34
%s Время в секундах с 01.01.1970 957228726
%T Время в формате «%H:%M:%S» 14:05:34
%U Неделя года 16
%w Номер дня недели 4
%y Год в формате ГГ 99
%Y Год в формате ГГГГ 1999
%Z Временная зона MSK

Обратите внимание на то, что команды #config sizefmt и #config timefmt влияют на все связанные с ними SSI-команды от того места, откуда они были вызваны и до самого конца страницы. Поэтому каждый вызов команд #flastmod и #fsize лучше снабжать своей командой #config.

set — устанавливает значение переменной. Ее атрибутами являются var, определяющий имя переменной, и value, определяющий ее значение.

Подстановка переменных производится внутри заключенных в кавычки строк в большинстве аргументов SSI директив. В этих случаях знак доллара можно вставить, предварив его слешом:

Для предотвращения двусмысленности можно заключать имя переменной в фигурные скобки:

В результате такого присвоения переменная Zed будет иметь значение «Xbc_Y», если переменная a равна X, а переменная abc равна Y.

printenv — Выводит список так называемых «переменных окружения» («environment variables») с их значениями. Вызывается без параметров.

  • DOCUMENT_ROOT (название основной папки для вебстраниц на сервере, обычно ваша папка public_html и путь к ней)
  • USER_AGENT и HTTP_USER_AGENT (название браузера, которым пользуется посетитель)
  • REMOTE_ADDR (IP-адрес посетителя)
  • REMOTE_HOST (адрес посетителя в нормальной форме — например, adsl53.peterlink.ru)
  • SERVER_ADDR (IP-адрес вашего сайта)
  • SERVER_NAME и HTTP_HOST (адрес сервера, типа userguide.webservis.ru),
  • DOCUMENT_URI, REQUEST_URI и SCRIPT_NAME (запрошенная вами страница, типа /examples/mysqlexample.shtml.),
  • DOCUMENT_NAME (имя файла (без каталогов) документа, запрошенного пользователем),
  • SCRIPT_FILENAME (полный путь к вебстранице на сервере. Например /home/home-webservis/public_html/ и так далее),
  • SERVER_SOFTWARE (название сервера, например, Apache/1.3.2 (Unix))
  • SERVER_ADMIN (почтовый адрес владельца сервера, указанный при установке),
  • DATE_LOCAL (сегодняшние время и дата в вашем часовом поясе(для сервера)),
  • DATE_GMT (текущее время по Гринвичу),
  • LAST_MODIFIED (дата последней модификации документа, запрошенного пользователем. То есть во вложенном SSI эта переменная будет содержать имя «главного» документа, а не вложенного).
  • HTTP_COOKIE (Строка Cookie установленная для текущего домена.).

echo — выводит значение установленной переменной SSI. Допустимые атрибуты:

  • var — (обязательный) имя выводимой переменной;
  • encoding — (необязательный) перекодировка значения переменной перед выводом. Действует в версиях Apache 1.3.12 и выше. В версиях Apache 2.2.6 и выше по умолчанию символы кодируются в windows-1252 из-за чего ssi переменные окружения с русскими сиволами при отображении в документе портятся и выглядят как кракозябры, во избежание этого всегда указывайте encoding=»none». Обратите внимание, что будучи заданным, этот атрибут должен предшествовать атрибуту var. Варианты значений атрибута encoding:
    • entity — (по умолчанию) будет произведено преобразование специальных HTML-символов в сущности;
    • url — будет произведено т.н. %-преобразование, то есть пригодное для указание в строке URL;
    • none — не будет производиться никаких преобразований.

flastmod — выводит дату последней модификации файла в определенном с помощью timefmt формате. Атрибуты аналогичны атрибутам fsize.

fsize — выводит размер файла в определенном с помощью sizefmt формате. Допустимые атрибуты:

  • file — определяет путь к файлу, относительно сканируемого документа;
  • virtual — определяет стандартный кодированный URL, относительно сканируемого документа, или, при наличии в начале слеша (/) — относительно корня документов узла.

include — включает текст другого документа или файла в сканируемый файл. К включаемому файлу применяются все установленные правила ограничения доступа. Если для каталога, из которого включается файл, установлена опция IncludesNOEXEC, и включение данного документа привело бы к запуску программы, то документ не включается, и выводится сообщение об ошибке. CGI сценарии вызываются, как обычно с помощью URL, который может содержать кодированную строку запроса (query string). Положение файла указывается с помощью атрибутов:

  • file — указывает путь, относительно сканируемого документа; путь не может содержать ../ и не может быть абсолютным путем; всегда предпочтительнее использовать атрибут virtual;
  • virtual — содержит кодированный URL, относительный или абсолютный; URL не может содержать имя протокола или имя хоста, и может содержать строку запроса.
Илон Маск рекомендует:  Нейрокомпьютерная техника благодарности


Условные операторы

Базовыми элементами контроля являются:

Элементы elif и else являются необязательными.

Элемент endif заканчивает элемент if и является обязательным.

test_condition может быть одним из следующих:

  • string — истинно, если string не пуста;
  • string1 = string2
  • string1 != string2
  • string1 string2
  • string1 >= string2
  • всё вышеперечисленное истинно, если выполняется условие сравнения;
  • string1

string2 — истинно, если string1 содержит в себе string2;
string1

= /string2/ — истинно, если string1 содержит в себе string2, а string2 — регулярное выражение Unix (см. ниже).

Если string2 имеет форму /string/, то тогда она интерпретируется, как регулярное выражение. Их синтаксис аналогичен синтаксису регулярных выражений в Unix команде egrep;(см. Регулярные выражения)
(test_condition) — истинно, если test_condition истинно;
! test_condition — истинно, если test_condition ложно;
test_condition1 && test_condition2 — истинно, если как test_condition1, так и test_condition2 истинны;
test_condition1 || test_condition2 — истинно, если хотя бы test_condition1 или test_condition2 истинно.
«=» и «!=» имеют больший приоритет, чем «&&» и «||», а «!» имеет наивысший приоритет.

Все, что не распознается, как переменная, считается строкой. Если строка имеет пробелы или символы табуляции, то ее надо заключать в кавычки.
О чём стоит помнить, так это о том, что лучше не использовать SSI-команды при создании страниц в редакторах типа Front Page — они их обычно не понимают и выкидывают, и о том, что одну SSI-команду нельзя вызвать из другой (как нельзя вызвать SSI-команду из скрипта, и скрипт из скрипта).

SSI — Server Side Includes — Директивы включения на стороне сервера

Ерижоков А.А., 2000.

SSI расшифровывается как S erver S ide I nclude. SSI — это набор команд, позволяющий включить в страницу информацию, недоступную средствами HTML, такую как вывод программ, значения переменных окружения и статистику по файлам (размер, дата создания и др.). Все это и более позволяют делать CGI-скрипты, но зачем писать целый скрипт для получения размера файла, если можно воспользоваться SSI?:)

SSI работает очень просто: при получении запроса на документ, содержащий SSI-директивы, http-сервер обрабатывает документ, выполняет все SSI-директивы, а получившийся в результате документ возвращает клиенту. Http-сервер не проверяет автоматически все документы на наличие SSI-директив, а только те, которые относятся к типу, указанному в настройках сервера.

Для указания http-серверу, какие документы считать содержащими SSI-директивы, в srm.conf , находящемся в /etc/httpd/conf надо раскомментировать следующие строки:

AddType text/html .shtml
AddHandler server-parsed .shtml

После этого все документы с расширением .shtml будут проверяться на SSI-директивы. Но удобнее будет определить чтобы все .html -файлы могли содержать SSI. Это делается добавление в srm.conf следующих строчек:

AddType text/html .html # не обязательно, т.к. он и так описан.
AddHandler server-parsed .html

Теперь надо разрешить выполнение SSI в каталоге, в котором лежат твои файла. Найди в access.conf описание каталога, в котором лежат твои html’ы и добавь в его Options директиву Includes :

#было так
Options Indexes
#стало так
Options Indexes Includes

Если твой каталог не прописан, его надо прописать. Почитай доку по Apache, чтоб узнать как это делается.:) А если у тебя нет возможности изменять srm.conf или access.conf , т.е. ты не root , тогда за пивом, а потом к админу.:)

SSI-директивы включаются в html-код в виде комментариев, но определенного формата:

Использовать можно следующие SSI-директивы:

Ты пришел со страницы —

Список переменных окружения:

Список переменных окружения:
CHARSET = koi8-r
CHARSET_DETERMINED_BY = UserAgent
CHARSET_HTTP_METHOD = http://
CHARSET_SERVER_NAME = in-hosting.agava.ru:80
CHARSET_SERVER_PORT = 80
DATE_GMT = Saturday, 03-Mar-2001 15:02:32 GMT
DATE_LOCAL = Saturday, 03-Mar-2001 18:02:32 MSK
DOCUMENT_NAME = ssi.html
DOCUMENT_PATH_INFO =
DOCUMENT_ROOT = /home
DOCUMENT_URI = /d/dhls.agava.ru/WWW/ssi.html
GATEWAY_INTERFACE = CGI/1.1
HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
HTTP_ACCEPT_CHARSET = iso-8859-1,*,utf-8
HTTP_ACCEPT_ENCODING = gzip
HTTP_ACCEPT_LANGUAGE = ru, en
HTTP_AGAVA_ACCELERATOR_REMOTE_ADDR = 194.186.148.202
HTTP_CONNECTION = close
HTTP_HOST = dhls.agava.ru
HTTP_REFERER = http://dhls.agava.ru/webdesign.html
HTTP_USER_AGENT = Mozilla/4.73 [en] (X11; I; Linux 2.2.14-15mdk i686)
HTTP_X_FORWARDED_FOR = 194.186.148.202
LAST_MODIFIED = Tuesday, 06-Feb-2001 13:58:25 MSK
PATH = /bin:/usr/bin:/usr/local/bin
PERLLIB = /site/perl/sys:/site/perl/lib
QUERY_STRING =
REMOTE_ADDR = 213.59.3.226
REMOTE_PORT = 1470
REQUEST_METHOD = GET
REQUEST_URI = /d/dhls.agava.ru/WWW/ssi.html
SCRIPT_FILENAME = /home/d/dhls.agava.ru/cgi/env.pl
SCRIPT_NAME = /cgi-bin/env.pl
SCRIPT_URI = http://in-hosting.agava.ru/d/dhls.agava.ru/WWW/ssi.html
SCRIPT_URL = /d/dhls.agava.ru/WWW/ssi.html
SERVER_ADDR = 172.16.1.6
SERVER_ADMIN = webmaster@agava.com
SERVER_NAME = in-hosting.agava.ru
SERVER_PORT = 80
SERVER_PROTOCOL = INCLUDED
SERVER_SOFTWARE = Apache/1.3.14 (Unix) PHP/4.0.3pl1 rus/PL30.0
SOURCE_CHARSET = windows-1251
USER_NAME = dhls1

Мой PGP ключ:
——BEGIN PGP PUBLIC KEY BLOCK—— Version: PGPfreeware 5.0i for non-commercial use mQBtAzhowUIAAAEDAM+2uk0Jd15B49ZUd6oN6qsMWI/lLixReCHqRFh/1rCzGChj AS82oFsXzW55bUCHvK2g9BWyP > fsize file

Размер файла этой страницы:

Время последней модификации файла этой страницы:

Немного информации о тебе:

Ты пользуешься броузером » Netscape » , версии 4.73 [en] для операционной системы » Linux 2.2.14-15mdk i686) «. У тебя прямой доступ в Internet. Твой IP — 194.186.148.202 , а имя хоста — tura.ru
Не так уж и много. :)

Сейчас:
config errmsg
config sizefmt
config timefmt

Это стандартная ошибка при запуске скрипта, которого нет:

А теперь заменим сообщение об ошибке и повторим:


Размер файла этой страницы в килобайтах:

Размер файла этой страницы в байтах:

Время модификации файла этой страницы в секундах с 01.01.1970:

Время модификации файла этой страницы в читабельном виде:

Формат Описание Пример
%a Аббревиатура названия дня недели Sun
%A Полное название дня недели Sunday
%b Аббревиатура названия месяца Jan
%B Полное название месяца January
%d День месяца 01 (не 1)
%D Дата в формате «%m/%d/%y» 01/31/90
%e День месяца 1
%H Часы в 24-часовом формате 13
%I Часы в 12-часовом формате 01
%j День года 235
%m Номер месяца 01
%M Минуты 03
%p AM|PM AM
%r Время в формате «%I:%M:%S %p» 11:35:46 PM
%S Секунды 34
%s Время в секундах с 01.01.1970 957228726
%T Время в формате «%H:%M:%S» 14:05:34
%U Неделя года 49
%w Номер дня недели 5
%y Год в формате ГГ 95
%Y Год в формате ГГГГ 1995
%Z Временная зона MSK
printenv

Список переменных окружения:

Значение переменной SERVER_NAME:

Значение переменной SERVER_NAME:

Вывод: Броузер: Неизвестный (Mozilla/4.73 [en] (X11; I; Linux 2.2.14-15mdk i686))

(c)Ерижоков А.А., 2000.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника: DH’s Linux Site

Что такое код ssi

Ну уж, так-таки и всё?

Когда я задумывал это руководство, мысль была именно такая — весь язык-то немногим больше словарного запаса людоедки Эллочки.

Но оказалось, что всё не так просто. Практически, сколько серверов, столько и разных нюансов в настройках. Чтобы разобраться во всём этом, нужно быть администратором сервера, иметь доступ к его настройкам и уметь этими настройками пользоваться. Всё это пока что за пределами моих возможностей и знаний (хотя некоторые чисто абстрактные знания, недоступные мне на практике, пришлось-таки загрузить в мозги).

Обилие компактных руководств в интернете для простых пользователей вроде меня, не спасает, а порой добавляет ещё больше неясности в силу недосказанности и, пардон, ошибок в примерах кода. Метод интенсивного тыка помог понять кое-что из того, что нигде не описано. Этот же метод помог понять и то, что некоторые вещи мне недоступны по вышеизложенным причинам.

По крайней мере, здесь вы найдёте практически исчерпывающий набор директив, атрибутов, операторов.

Описаны и переменные окружения (о полном наборе говорить не приходится, т.к. на каждом сервере он свой).

Кое-что «нарыл» я и в такой «мутной» теме, как регулярные выражения.

Моё «всё» означает отсутствие недосказанностей. Если что-то не работает в моём серверном окружении, я прямо об этом говорю.

Для удобства я разделил пособие на «шаги» и справочник. В «шагах» мы будем двигаться от простого к сложному, осваивая методику на ограниченном языковом материале. Здесь используются только те элементы языка, правильную работу которых я могу гарантировать

Справочник содержит по возможности полную информацию по элементам языка, и им можно пользоваться как словарём.

На досуге продолжаю экспериментировать с «неопознанными объектами». Если заработает что-то новенькое, то тут же появится в справочнике.

Кое-что о терминологии. В разных справочниках используются как синонимы понятия «директива», «инструкция» и «функция».

Я пользуюсь терминами «директива» и «инструкция», которые не совсем синонимы. В конструкции вроде под директивой понимается ключевое слово, начинающееся со знака # (в данном примере — #include ), а под инструкцией — всё выражение, находящееся между тэгами и —-> или комплекс директива-атрибут (в данном случае — #include file ).

ЧТО ЭТО ТАКОЕ

SSI (эс-эс-ай, в просторечии «Асисяй», Server Side Includes — включения на стороне сервера) — небольшой язык для сборки web-страницы «на лету» из составных частей, находящихся на сервере. В какой-то мере можно считать его альтернативой технологии фреймов, лишённой её печально известных недостатков.

Кроме фреймов, мы знаем и другие различные включения. Например,
или . Но все они выполняются браузером пользователя, и в исходном коде страницы мы видим ссылающиеся тэги. Включения же SSI происходят на самом сервере, и, просматривая в браузере исходный код, мы видим просто сплошной HTML-код страницы, как будто она и не собрана из лоскутков.

Кроме загрузки кусков HTML-кода, SSI делает и кое-что ещё, о чём мы скоро узнаем.

Существует две модификации SSI: XSSI (eXtended SSI) и SSI+. Внятных спецификаций этих стандартов нет. Пока что удалось установить методом «тыка», что XSSI работает, по крайней мере, на тех серверах, с которыми я имею дело, а SSI+ на них не работает.

В этом, нулевом шаге мы ещё не начинаем работать с SSI, а лишь готовим «рабочее место».

НАСТРОЙКА СЕРВЕРА

Чтобы эта технология заработала, нужно указать нужные настройки в файле .htaccess , который должен находиться в корневой папке вашего сервера. Обычно по умолчанию какие-то настройки уже есть, например:

Рассмотрим по очереди.

Это означает, что куски кода, добавляемые в основной документ, должны быть сохранены в файлах с расширением .txt .

Эта настройка сообщает о том, что расширение основного документа должно быть .shtml , иначе SSI не заработает.

Можно сделать и другие, более широкие настройки, указав несколько расширений через запятые, например:


То есть теперь в файл с обычным расширением .html или .htm можно вставить куски кода, написанные в файлах .html , .htm или .txt .

Все файлы с расширениями, указанными в настройках, сервер будет проверять на наличие включений. Это может несколько замедлить их загрузку. Поэтому, если файлов на сайте много, а файлов с использованием SSI — мало, то есть смысл оставить минимальные настройки, чтобы сервер не проверял лишние файлы.

Включаемые файлы .html и .txt иногда работают немного по-разному. Об этом я ещё нигде не читал, но на практике напоролся. В соответствующем разделе я это прокомментирую.

И последняя строка:

Она запускает заданные выше настройки.

Возможна и другая запускающая строка:

Это запустит не только вставки SSI, но и другие серверные скрипты, написанные на языках PHP, Perl и т.п.

Если вы новичок и боитесь что-то испортить в настройках файла .htaccess, данных по умолчанию, то не стирайте и не исправляйте их, а предварите знаком #, что превратит их в комментарии, а затем напишите свои:

#AddType text/html .txt
#AddHandler server-parsed .shtml
#Options +ExecCGI
AddType text/html .html, .htm, .txt
AddHandler server-parsed .html, .htm, .shtml
Options +Includes

Если решили поэкспериментировать и безнадёжно запутались — сотрите своё «творчество» и раскомментируйте настройки по умолчанию.

Если страница с включением SSI не отобразит этой вставки, значит, настройки не запустились.

Если вместо включённого фрагмента на странице появится сообщение

(то есть «ошибка при выполнении директивы»), это означает, что запуск произошёл, но либо настройки недостаточны, либо есть ошибка в коде директивы SSI.

Последнее обновление страницы: 17.11.2020, 06:20

zoonman ·ru ПроектыСтатьи и заметки

Как это включается.

Чтобы включить этот модуль, в конфигурационный файл httpd.conf Apache нужно включить указание обработки файлов сервером:

Как правило, а может это так и есть, данный файл расположен по адресу /etc/httpd/httpd.conf если вы работаете под Linux или путь_к_серверу/conf/httpd.conf под Windows. Но помните, из правил бывают и исключения.

Отмечу такую особенность, что на модуль mod_include еще ссылаются mod_cgi, mod_expires.

Еще желательно добавить указание разрешения обрабатывать файлы в директории по умолчанию.

Можно слегка защититься указав директиву IncludesNOEXEC:

Если вы хотите использовать файл .htaccess для включения парсинга, то в нем нужно указать:

И не забыть про разрешение обрабатывать файл .htaccess:

Есть еще один оригинальный метод включения SSI обработки — это директива XBitHack, установка её в on приводит к тому, что все файлы имеющие флаг «выполняемый», будут обрабатываться:

Для присвоения такого флага для файлов нужно дать команду (при работе в Unix-системах)

Известно, что в конфигурации по умолчанию Apache отдает SSI страницу без даты ее последней модификации, потому что расчет её достаточно сложен. Естественно это приводит к некэшируемости страницы и, за счет этого, увеличению расходов по передаче трафика. Проблема кэширования страниц стоит уже давно, тут надо строго определиться, нужно ли вам её кэшировать или нет. Если на странице представлена динамичная информация, то кэшировать не стоит, иначе придется призадуматься. Пока вы ломаете голову, я вернусь к решению проблемы. Тут есть два пути:

  1. Использовать XBitHack Full запись в конфигурации. Это приведет к тому, что дата последней модификации будет установлена по дате запрашиваемого файла. Например, ежели запрошен файл projects.shtml , а он включает в себя cms.shtml и profiler.shtml , то дата будет отправлена по файлу projects.shtml .
  2. Использовать директивы модуля mod_expires, которые указывают браузеру и прокси-серверам возможность кэширования страницы.

В Apache 2.x появилась возможность применения фильтров:

Все начинается с элементарных конструкций, называемых директивами. Общий вид:

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

element — элемент, команда указывающая на действие

attribute — атрибут команды

value — значение атрибута

Значение атрибута часто бывает заключено в двойные кавычки. Многие команды разрешают только одну пару атрибут=»значение» . Существует замечание относительно окончания команды « , оно должно обязательно отделяться пробелом от выражения, иначе может быть воспринято как часть выражения или, к примеру, значения атрибута.

Рассмотрим базовые директивы:

Такая конструкция позволяет просто включить файл my_included_file.inc не производя над ним никаких действий. В качестве такого файла может быть статичная веб-страница.

Значение атрибута file — это путь относительно директории, содержащей вызываемый документ. Он не может содержать ../ или абсолютный путь, то есть находящейся в той же папке, что и вызывающий файл.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL