Ssi что, когда, как


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 — это путь относительно директории, содержащей вызываемый документ. Он не может содержать ../ или абсолютный путь, то есть находящейся в той же папке, что и вызывающий файл.

Ssi что, когда, как?

А! Так Вы даже и не знаете, что это такое? И, тем более, не понимаете, зачем он Вам нужен? Что же, значит, Вы пришли, куда надо. Сегодня здесь всем объясняют — зачем им нужен SSI :-)

Как все нормальные люди, вначале расшифруем аббревиатуру SSI — Server S >SSI — это директивы, вставляемые прямо в HTML-код и служащие для передачи указаний Wев-серверу. Встречая такие директивы, которые, кстати, называются SSI-вставками, Web-сервер интерпретирует их и выполняет соответствующие действия. Какие, спросите Вы? А вот, например: вставка HTML-фрагмента из другого файла, динамическое формирование страничек в зависимости от некоторых переменных (например, типа броузера) и другие не менее приятные вещи.

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

Для того, чтобы сервер знал, что страничка не обычная, а содержит SSI-директивы, она имеет специальное расширение: *.shtml или *.shtm, наличие которого и заставляет web-сервер предварительно обрабатывать странички. Вообще-то, расширение может быть любое — в зависимости от конфигурации web-сервера, но в основном применяется именно *.shtml.

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

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

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

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

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

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

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

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

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


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

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

Теперь давайте рассмотрим реальный пример применения SSI для формирования сложного документа из нескольких SSI-вставок. Вначале напишем текст основного HTML-документа, полагая, что SSI-вставки находятся в каталоге /ssi:

index.shtml

Теперь напишем код для этих SSI-вставок:

_header.shtml

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

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

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

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

SSI — что, когда, как?

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

Начните получать постоянный доход!
Станьте автором на Web-3

Нашли ошибку в тексте? Выделите и нажмите Ctrl+Enter

Используя интернет ресурс web-3.ru, Вы соглашаетесь на обработку Ваших персональных данных (см. Политика конфиденциальности), в противном случае вы должны прекратить использование ресурса.
© Все права защищены. 2008–2020.

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: сколько и кому

Важная информация для получателей дополнительного социального дохода

15.10.2015 в 08:35, просмотров: 11047

Моя статья «Кто платит за бесплатный завтрак?» («ВНС», №26 от 26 июня — 2 июля с.г.) заинтересовала читателей, что мне, естественно, было приятно, хотя отклики были не всегда положительными. В любом случае я очень благодарен откликнувшимся читателям.

Интересно, что проживающая в Бруклине читательница Т.З. посчитала приведенный в статье перечень льгот и привилегий своеобразным «руководством к действию» и попросила ответить на некоторые вопросы, связанные с получением SSI (Дополнительный социальный доход). Полагаю, что эта информация может заинтересовать и других читателей газеты.

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

Разрешается иметь на счету в банке не более $2000 для одиночек и $3000 для супругов. Накоплениями считаются не только деньги, но и собственное жилье или автомобиль. Более подробно с требованиями к получателям SSI можно ознакомиться на сайте Администрации Сошиал Секьюрити (SocialSecurity.gov).

Вопрос: Имеют ли право на получение SSI иммигранты, приехавшие в США в пенсионном возрасте, или приехавшие в пенсионном возрасте и потом получившие гражданство?

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

Размеры SSI различны в различных штатах, так как состоят из федеральной части, общей для всех, и дополнительной суммы, выделяемой штатом (не во всех штатах). Следует учесть, что размер SSI для супругов отнюдь не равен двойной сумме, которую получал бы каждый из них, — она существенно меньше (учитывается, что общие расходы на первостепенные нужды – и, в первую очередь, на жилье – у супругов меньше). Поэтому у некоторых супругов, получающих SSI, возникает соблазн обмануть государство с помощью фиктивных документов – декларации о раздельном проживании или даже разводе.

Ни в коем случае не делайте этого! Этот трюк может пройти, но далеко не всегда, а последствия могут быть самые печальные, — с законом в Америке не шутят!

Вопрос: Имеют ли право на SSI иммигранты, приехавшие по статусу воссоединения семей (например, с детьми)?

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

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

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


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

Вопрос: Имеет ли право на получение SSI люди, работающие на чек?

Ответ: Да, имеют, но если получатель SSI работает, то весь его заработок, за очень малым исключением ($20 в месяц), считается доходом и будет вычтен из суммы пособия. А при достаточно большом заработке человек вообще лишается права на получение SSI.

Если будет обнаружено, что вы не сообщили о своем заработке (неважно, получали ли вы его чеком или наличными), то самое малое наказание за это нарушение – возврат незаконно полученных денег государству (а могут и лишить пособия навсегда). Правда, делается это в рассрочку (например, вычитается из пособия $25 в месяц), так что выплаты могут растянуться на несколько лет.

Получить SSI может и человек, въехавший в США не в пенсионом возрасте и успевший до выхода на пенсию заработать пособие по «сошиал секьюрити» (SS). Если сумма этого пособия меньше SSI (что бывает нередко), то вы может подать заявление на получение SSI (если выполняются все требования), а пособие по «сошиал секьюрити» будет вычтено из пособия по SSI.

Многие получатели «сошиал секьюрити» считают, что в этом случае им «доплачивают» до SSI. Но это неверно. Если у вас нет права на получение SSI, никакой «доплаты» вы не получите.

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

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

Что такое SSI, или Сделай свой сайт проще! (Часть 2)

В первой части статьи мы рассмотрели использование технологии SSI для облегчения сопровождения сайта. Почему для этого не использовать связку PHP+MySQL? Конечно, эти инструменты позволят решить задачу гораздо эффективнее и еще более облегчат сопровождение… Если вы вообще представляете, что означает этот набор букв. В противном случае придется потратить на их изучение не одну неделю, прежде чем вы сможете приступить к созданию своего маленького сайта. SSI гораздо проще и может рассматриваться просто как несколько дополнительных тэгов HTML.

Кроме того, есть причины чисто экономического характера. На коммерческих хостингах поддержка SSI имеется практически всегда, даже в самых дешевых тарифах. Тариф с PHP может стоить в два-три раза дороже. SSI часто есть даже на бесплатных хостингах, что не может не радовать владельцев страничек типа «Я и моя собака», если собак много.

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

Перейдем к другим возможностям SSI, которые принципиально недоступны «чистому» HTML. Скорее всего, вы видели на некоторых сайтах надпись «Последний раз страница обновлялась…». Если это не уловка, реализованная через JavaScript и привязанная к дате компьютера пользователя, то реализовать ее в HTML невозможно. В SSI это решается просто, нужно только указать имя файла:

В окне браузера мы увидим что-то вроде:

Последнее обновление: Sunday, 30-Mar-2008 18:05:04 Московское время (зима)

Формат представления даты можно поменять, для этого есть директива:

Наиболее употребительные значения формата такие: «%D» — дата в формате 03/30/08, «%r» — время в формате 18:05:04 PM.

С помощью SSI можно получать доступ к некоторым специальным значениям, которые называются переменными окружения. Там довольно много любопытного. Например, переменная HTTP_USER_AGENT содержит идентификатор используемого браузера и операционной системы, а REMOTE_ADDR — IP-адрес посетителя сайта. Получить список всех переменных окружения можно SSI-директивой:

Самым приятным является то, что SSI-директивы включают в себя конструкцию if/else. Полный ее синтаксис такой:

HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно

HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 истинно

HTML-код, который будет выводиться, если все условия ложны

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

Как иногда хочется, чтобы содержимое сайта хоть как-то менялось, создавая видимость профессионального программного движка. Например, менялся бы рекламный блок на странице, выдавая разным посетителям разную информацию. Вот в этом нам и поможет SSI-директива if/else. Для этого нужно только подобрать подходящее условие. Наиболее просто привязаться к часам сервера — ведь время постоянно меняется. Добраться до часов сервера напрямую не получится, поэтому используем переменную окружения DATE_GMT. В списке форматов времени используем «%S» — только секунды. Теперь в нашем распоряжении есть все необходимое. Вставляем SSI-код:

Илон Маск рекомендует:  Элемент base

Рекламный блок 1

Рекламный блок 2

Рекламный блок 3

У нас получился рекламный блок, который меняется три раза в минуту. Посетители на сайт заходят бессистемно, поэтому можно считать, что каждый получает случайную рекламу. Количество условий можно увеличить, хоть по одному на каждую секунду. А можно использовать формат «%M» и менять рекламу несколько раз в час.

Полный список всех SSI-команд, форматов, примеров использования легко найти в Интернете. Поверьте, освоить SSI очень просто и дело того стоит!

Собираем web-страницу из кусочков

SSI (Server Side Includes) — включения на стороне сервера, а точнее это директивы, вставляемые прямо в HTML-код и служащие для передачи указаний Wев-серверу. Встречая такие директивы, которые, кстати, называются SSI-вставками , Web-сервер интерпретирует их и выполняет соответствующие действия: например, вставка HTML-фрагмента из другого файла, динамическое формирование страничек в зависимости от некоторых переменных (например, типа Браузера) и другие.

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

Физически эти блоки представляют собой просто отдельные HTML-файлы, содержащие часть кода, нужную для выполнения их задачи. Например такие элементы сайта как Шапка, Меню, Подвал и т.д. повторяются на всех web-страницах сайта, так почему бы их не вынести в отдельные файлы и просто не подгружать в нужное место каждой html-страницы при загрузке запрашиваемой web-страницы Посететелем. А сборку готовой web-страницы давайте доверим серверу.

Для того, чтобы сервер знал, что страничка не обычная, а содержит SSI-директивы , она имеет специальное расширение: .shtml или .shtm, наличие такого расширения и заставляет web-сервер предварительно обрабатывать web-странички. Вообще-то, расширение может быть любое — в зависимости от конфигурации web-сервера, но в основном применяется именно .shtml.

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

# — признак начала SSI-вставки;
command — SSI-команда;
param — параметры 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-документа Листинг 1, полагая, что 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 что, когда, как?

Server Side Includes — инклюды, способы применения, переменные

Возможно вам известно, что SSI часто употребляется в качестве инструмента для вставки инклюдов, особенно при программировании серверной части сайта использовался CGI или Perl.
Но какой в этом смысл при программировании на PHP, если PHP имеет свои собственные инклюды: или ?

Дело в том, что мы, как небольшая компания часто работаем с разными программистами, или выполняем только часть работы — например дизайн и верстку. Часть из программистов работает на CGI/Perl, другие на PHP.
Не всегда мы получаем сайт на поддержку — сделали и ушли. Знакомая ситуация? Что делать клиенту, который получил сайт, со временем захотел доделать что-либо, но по тем, или иным причинам утратил связь с программистом, который исполнял работу? — Искать другого, конечно.
Нет, программиста найти не проблема. Но что если сайт написан на PHP, а ваш программист всем хорош, но пишет, к примеру на Perl? — Переделывать весь сайт ради одного модуля — невыгодно, нанимать еще кого-то — тоже не всегда удобно.

Вот тут-то и приходит на помощь SSI. Дело в том, что директивы SSI могут работать в файлах .html (.htm) и выполняются на уровне сервера. Именно поэтому работают они очень быстро и не затрачивая лишних ресурсов сервера. А язык настолько прост, что практически вся его документация может поместиться на одной странице.

Это и плюс, и минус — возможностей немного, но и времени на изучение языка нужно потратить минимум. А результат полностью это оправдывает.

Типы файлов, в которых сервер будет искать и выполнять директивы SSI можно переопределить в файле .htaccess. По умолчанию это файлы с расширением .shtml, .stm или .shtm
Чтобы добавить в этот список файлы .html напишем в файл .htaccess пару строк (сделать это можно в любой программе, работающей с текстовыми файлами, к примеру в Блокноте):

.htaccess — это файл конфигурации веб-серверов типа Apache. Его директивы выглядят также, как и основной конфигурационный файл сервера, но действуют только в тех каталогах (папках), в которых расположены, и в их дочерних папках.
Большинство хостинг-провайдеров разрешают клиентам размещать собственные файлы .htaccess. И чаще всего, при виртуальном хостинге — это единственный способ управления вашим веб-сервером.

Илон Маск рекомендует:  Что такое код swftext >moveto

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

Теперь у нас есть возможность воспользоваться SSI. Из самого названия (Server Side Includes) следует, что эта технология предназначена прежде всего для включения содержимого (или результатов работы скриптов) одного файла в другой. С этого и начнем.

Любая директива SSI заключается в знак условных комментариев и отличается только наличием знака «#» («решетки»):

А наш инклюд будет выглядеть так:

Параметр virtual позволяет задать путь к подключаемому файлу в привычном виде — относительном, или абсолютном пути к файлу.

Допустим, что наш сайт — это вполне обычный сайт с шапкой, верхней и нижней навигацией, боковой колонкой (сайдбаром), и подвалом (футером). А исходный код страницы выглядит примерно так:

Что мы видим? На всех страницах нашего сайта одинаковые шапка и подвал, и у нас всего один или несколько вариантов содержимого для боковой колонки. Значит эти фрагменты можно сделать общими для всех страниц. Тогда, чтобы допустим, поменять шапку на всем сайте нам потребуется отредактировать всего лишь один файл.
Выносим общие фрагменты в отдельные файлы — header.html, sidebar.html и footer.html и складываем эти файлы в одну папку для удобства. Скажем, папку /ssi/.
А вместо этих фрагментов в файл впишем соответствующие инклюды.
Вот так теперь будет выглядеть наш основной файл:

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

Меню навигации на SSI

Теперь перейдем к навигации и сделаем так, чтобы страница не ссылалась сама на себя и посетители видели, на какой странице сайта они находятся.
Для этого мы воспользуемся командами if — elif — else — endif и предопределенной переменной DOCUMENT_URI, которая указывает абсоютный путь к файлу, в котором она вызвана.
Откроем файл /ssi/header.html, в котором находится код нашей «шапки» с верхней навигацией. И допишем условия — на каких страницах и как она должна показываться:

Параметр expr указывает на то, что переменная будет тестироваться на соответствие указанному регулярному выражению.
В итоге, на странице /services/index.html в меню будет услуги , в любом другом файле в папке /services/ — услуги, а на всех остальных страницах сайта — услуги. И нам остается только прописать соответствующие стили для отображения пунктов меню в CSS.

Показываем разное содержимое в одном и том же блоке на разных страницах


Таким же образом можно выбрать другое содержимое для какого-либо блока для показа на отдельных страницах. Например — в сайдбаре (файл /ssi/sidebar.html).

Вставка результатов работы серверных скриптов

А что же с файлами PHP и остальными серверными скриптами? — А то же самое — их тоже подключаем инклюдами SSI.
Если нам нужно передать в исполняемый серверный скрипт результаты GET-запроса — например, у нас на сайте есть страница, которая должна выводить результаты поиска и запрос выглядит как http://mysite.com/search.html?query=javascript
В этом случае мы прибавляем к линку на скрипт наш запрос с помощью переменной QUERY_STRING:

В файле search.php мы получаем запрос с помощью $_GET[‘query’] и выдаем соответствующий результат.

Для запуска скриптов CGI есть специальная команда — exec:

Вывод даты и времени

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

Выведет © 2009 — 2010 (в этом году )

Параметры для 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

Дата по-русски:

. Хотя как раз это я бы сделал иным способом — много букоф.
Время естественно выводится серверное, а не время у юзера, как в случае вывода с помощью JavaScript.

Вывод размера и даты последней модификации файла

Параметры вывода размера определяются с помощью sizefmt: «abbrev» — в килобайтах, «bytes» — в байтах.

Для большинства случаев приведенных примеров будет достаточно.

Предопределенные переменные SSI

Список наиболее «интересных» из них:

  • DOCUMENT_ROOT (название основной папки для вебстраниц на сервере, обычно ваша папка public_html (www) и путь к ней)
  • 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 (дата последней модификации документа
  • HTTP_COOKIE (Строка Cookie).

Чтобы посмотреть все доступные предопределенные переменные воспользуйтесь командой

Что такое SSI

Что такое ssi и с чем его едят?

Server Side Include (SSI).Эта вещь в WWW-дизайне чрезвычайно нужная и полезная, так как во много раз облегчает работу по созданию и поддержке Web-сайта.

Server Side Include с английского переводится как «включаемый на стороне сервера».Эта технология позволяет Web-серверу включать в текст ваших HTML-страниц любой другой текст: содержимое текстовых файлов или, например, результат работы CGI-скриптов (который, как известно, обычно оформляется в виде HTML-текста). Происходит это «включение» непосредственно перед передачей текста HTML-страницы броузеру пользователя, так что посетитель страницы даже не догадывается об этой серверной «возне».

Какова же польза от SSI? Польза огромна. Предположим, на каждой странице своего сайта вы поместили список доступных разделов сайта. Творение ваше, как и положено, постоянно развивается, и вот вы решили добавить еще один раздел. Что же теперь, открывать все страницы в редакторе и тупо добавлять в текст одно и то же? Советский пионер (любящий трудности) поступил бы именно так, а умный Web-дизайнер станет использовать SSI. Для этого достаточно создать отдельный текстовый файл (например, menu.html) и занести туда HTML-код списка разделов. Непосредственно же в страницы сайта, в том месте, где должен находиться список разделов, нужно вставить следующую инструкцию:
Обратие внимание на то, что нужно дословно следовать синтаксису директив SSI. Забудете, например, поставить два тире в конце директивы — и сервер ей буквально «подавится», прекратив анализ страницы.

Когда кто-либо захочет просмотреть эту страницу, сервер заменит инструкцию содержимым файла menu.html. Если вы измените файл menu.html, то все страницы, где вы использовали , обновятся автоматически. Обратите внимание: в HTML-файлах, лежащих на диске Web-сервера, ничего не меняется — сервер производит вставку текста «на лету», перед тем, как отправить WWW-страницу в броузер посетителя.

Вместо имени обычного текстового файла в инструкции можно указывать имя CGI-скрипта. В этом случае сервер сначала выполнит CGI-скрипт, а потом вставит результат работы скрипта в текст WWW-страницы. Это означает, что вы сможете реализовать такие вещи как, например, текстовый счетчик посещений или отображение на странице случайно выбранной фразы.

Есть еще одно косвенное преимущество применения SSI: из-за использования шаблонов типа вышеупомянутого menu.html WWW-страницы будут меньшими по объему, и вы сможете сэкономить немало времени, перписывая файлы на Web-сервер по FTP.

Но не все так прекрасно. Например, вам не удастся поэксперементировать с механизмом SSI на машине, на которой не установлен Web-сервер. Функционирование SSI обеспечивается именно сервером, поэтому при просмотре HTML-файлов с локального жесткого диска (например, С:), ваш броузер проигнорирует директивы SSI — ведь они, с точки зрения HTML, являются обычными комментариями.

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

К счастью, таких провайдеров не очень много. Большинство предлагают поддержку SSI по умолчанию. Но учтите, что на бесплатных серверах, таких, как Хоом, Tripod, Geocities, Chat.ru SSI не разрешается. Тут уж ничего поделать нельзя :-(

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

В общем, SSI — действительно полезный инструмент, игнорировать который, если вам дорого свое время (и деньги), не стоит.

Что такое SSI и с чем его едят II

Этой статьей хотелось бы открыть новый подраздел на DVK URL CLUB. «Ваша колонка» призвана собрать материалы и мнения наших посетителей. Первая статья написана нашим модератором раздела «Перекур» по мотивам одного из топиков на «Перекуре», в которой Александр поясняет некоторые особеннсти использования директив SSI. Так же автор хочет напомнить вам, что инструкциями SSI можно пользоваться только на том сервере, который их поддерживает. Большинство бесплатных хостингов в сети не выделяется такой особенностью, а попросту, не поддерживают SSI.

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

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

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

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