
Сайт по кирпичикам
Спецвыпуск хакер, номер #002, стр. 002-042-4
Может быть полезна для удаленного контроля размера лога или еще для каких целей.
Flastmod. Эта команда позволяет включить в документ дату последней модификации любого доступного файла.
Пример: <!--#flastmod virtual="mysuperfile.htm"-->.
В отличие от echo-команды, команда Flastmod скажет "всю правду" о любом интересующем файле!
Очень хороший способ для начальников контролировать их нерадивых подчиненных (шучу). Но на самом деле очень удобно - делаешь себе одну страничку, где идет список всех файлов, и после обновлений на сайте смотришь - не перепутал ли чего. :) Оно ведь всяко может быть.
Break. Как легко понять из имени команды, она занимается прерыванием. :) Эта команда, как только она встречается, немедленно и безусловно останавливает дальнейший вывод документа.
Пример: <!--#break -->.
Чрезвычайно проста в использовании и не менее чрезвычайно полезна при отладке важных страниц. Я думаю, ни у кого не возникает сомнений, что страницу на гипертексте тоже можно (и нужно!) отлаживать.
Безусловно, это не все тэги, доступные в синтаксисе SSI. К примеру, за скобками остались такие команды, как exec (позволяет выполнять внешние программы и cgi-скрипты), или сonfig (изменяет вывод таких, к примеру, команд, как fsize, flastmod, позволяя настроить нужный формат выдачи сообщений.
Немного программирования
Конечно, в SSI кое-что есть от программирования. Но все же большинство команд - статичны. Тем не менее, для тех, кто хочет делать по-настоящему динамически изменяемые страницы, придутся по душе несколько "чисто программистских" операторов, содержащихся в SSI.
Из всех операторов программирования самым важным для нас, безусловно, является оператор IF. В SSI тег IF позволяет осуществлять вывод определенного текста в зависимости от условий.
В общем виде синтаксис команды выглядит так:
if' "<operand1>" <operator> "<operand2>" <operation>.
На месте последней команды "operation" может быть один из операторов: 'goto', 'print', 'error', 'break', 'errorbreak' или 'printbreak'.
Очень простой пример - допустим, нужно показывать что-то использующим определенный браузер и не показывать это остальным - не хрена им не в свое дело лезть.
Пишем:
<!--#if "&&HTTP_USER_AGENT&&" hasstring "Mozilla" goto Mozilllalabel-->
<P>Ты, пацан попал, у тебя неправильный браузер, и здесь ты ничего не увидишь
<!--#goto ="defaultlabel" -->
<!--#label ="Mozilllabel" -->
<P>А ты пацан клевый, и мне очень нравится твой браузер :).
<!--#label ="defaultlabel" -->
(Здесь уже можно ничего не писать). :)
Все просто, просто до безобразия.
Можно использовать IF для того, чтобы сравнивать текст в формах. Т.е. можно проверить идентичность заполнения форм (а вдруг человек ошибся) или напоминать гостю, что какую-то позицию формы он не заполнил. Вежливо и элементарно. :)
В примере выше я использовал два стандартных оператора - goto и label. Надо "осветить" их чуть более подробно.
Goto. Используется в связке с меткой label (см. ниже).
Синтаксис команды: <!--#goto ="<label>"-->
Пример. <!--#goto ="secretlabel" -->