SHTML и ASP похожи. В файлах, названных в честь SHTML, используются некоторые инструкции SSI, как и инструкции в ASP. Вы можете написать инструкции SSI в файле SHTML. Когда клиент обращается к этим файлам SHTML,
На стороне сервера будет читать и интерпретировать эти файлы SHTML и интерпретировать инструкции SSI, содержащиеся в файле SHTML. Например: вы можете использовать инструкции SSI для обращения к другим файлам HTML (#include) в файле SHTML. Файл, отправленный сервером клиенту, заключается в том, что уже объясняемый SHTML не имеет инструкций SSI. Он реализует функции, которых HTML не имеет, то есть он может реализовать динамику
SHTML можно сказать, что является эволюцией HTML. Как и новостная система Sina, новостной контент исправлен, но реклама и меню на ней цитируются в #include.
В настоящее время есть в основном следующие использование:
1. Отображение переменных среды на стороне сервера <#echo>
2. Вставьте текстовый контент непосредственно в документ <#include>
3. Отображение информации, связанной с веб -документом <#flastmod> <#fsize> (например, дата/размер создания файлов и т. Д.)
4. напрямую выполнять различные программы на сервере <#Exec> (например, CGI или другие исполняемые программы)
5. Установите формат отображения информации SSI <#config> (например, метод отображения даты/размера файлов)
Усовершенствованный SSI <xssi> может установить переменные для использования, если условные операторы.
Использование SSI
SSI - это набор команд, предоставленных для веб -серверов. Эти команды встроены только непосредственно в содержимое комментария документа HTML. нравиться:
<#include file = info.htm->
Это директива SSI, которая используется для копирования содержимого info.htm на текущую страницу. Когда посетитель будет просмотреть, он увидит, что другие документы HTML отображают содержимое info.htm.
Формы использования других инструкций SSI в основном такие же, как и упомянутые только сейчас. Видно, что использование SSI просто вставляет небольшой код, а формы использования очень просты.
Конечно, если веб -сервер не поддерживает SSI, он просто будет рассматривать его как информацию о аннотации и напрямую пропустить контент; Браузер также будет игнорировать эту информацию.
Как настроить функциональность SSI на моем веб -сервере?
На некоторых веб -серверах (таких как IIS 4.0/Sambar 4.2) файлы, содержащие директиву #include, должны использовать расширение, которое было сопоставлено с интерпретатором SSI; В противном случае веб -сервер не будет обрабатывать директиву SSI; По умолчанию расширения .stm, .shtm и .shtml отображаются с интерпретатором (ssinc.dll).
Apache основан на ваших настройках, измените Srm.conf, такой как:
Addtype text/x-server-parsed-html .shtml будет анализировать директивы SSI только для файлов с расширением .shtml
Addtype text/x-server-parsed-html .html будет анализировать директивы SSI для всех документов HTML
Веб -сервер NetScape может напрямую использовать сервер администрирования (административный сервер) для включения функции SSI.
Веб-сайт использует тег отображения в программе Admin Server и добавляет тип контента как: wwwserver/html-ssi
Сервер CERN не поддерживает SSI. Вы можете использовать метод SSI SCAM. Загрузите скрипт Perl на http://sw.cse.bris.ac.uk/webtools/fakessi.html, чтобы ваш сервер CERN использовал некоторые инструкции SSI. (Директива EXEC не поддерживается.)
Основной формат инструкции SSI
Основной формат инструкции SSI:
Код программы:
<! ---- Имя инструкции = параметры инструкции>
<! ---- Имя инструкции = параметры инструкции>
нравиться
Код программы:
<#include file = info.htm->
<#include file = info.htm->
иллюстрировать:
1. <!--> Аннотация в HTML-синтаксисе. Эта информация будет игнорироваться, когда веб -сервер не поддерживает SSI.
2. #include - один из директив SSI.
3. Файл - это параметр include, info.htm - это значение параметра и относится к имени документа, которое будет включено в эту инструкцию.
Уведомление:
1. <!-Между номером # нет места, существуют только инструкции и параметры SSI.
2. Приведенная выше пунктуация =, никто не может отсутствовать.
3. Инструкции SSI чувствительны к случаю, поэтому параметры должны быть строчными.
Подробное объяснение использования инструкций SSI
#echo демонстрация
эффект:
Вставьте переменные среды в страницу.
Грамматика:
Код программы:
<!-#echo var = имя переменной->
<!-#echo var = имя переменной->
Название этого документа: Код программы:
<!-#echo var = document_name->
<!-#echo var = document_name->
Текущее время: код программы:
<!-#echo var = date_local->
<!-#echo var = date_local->
Ваш IP -адрес - код программы:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#include демонстрация
эффект:
Вставьте содержимое текстового файла непосредственно в страницу документа.
Грамматика:
Код программы:
<#include file = имя файла->
<#include virtual = имя файла->
<#include file = имя файла->
<#include virtual = имя файла->
Имя файла файла является относительным пути относительно каталога, в котором находится документ с использованием директивы #include. Включенные файлы могут находиться в одном и том же каталоге уровня или в его подкаталогах, но не в предыдущем каталоге уровня. Если документ NAV_HEAD.HTM в текущем каталоге IS FILE = NAV_HEAD.HTM.
Имя виртуального файла - это полный путь к виртуальному каталогу на веб -сайте. Если это означает файл NAV_HEAD.HTM в каталоге HOYI под корневым каталогом документа сервера; тогда это файл =/hoyi/vav_head.htm
Параметр:
Файл указывает местоположение содержащего файла относительно этого документа
Virtual указывает местоположение относительно корневого каталога документа сервера
Уведомление:
1. Имя файла должно иметь расширение.
2. Включенные файлы могут иметь любое расширение файла. Я думаю, что наиболее удобно использовать расширение HTM напрямую. Microsoft рекомендует использовать расширение .inc (это зависит от вашего хобби).
Пример:
Код программы:
<#include file = NAV_head.htm-> Вставьте файл заголовка на текущую страницу
<#include file = NAV_FOOT.HTM-> Вставьте хвостовой файл на текущую страницу
<#include file = NAV_head.htm-> Вставьте файл заголовка на текущую страницу
<#include file = NAV_FOOT.HTM-> Вставьте хвостовой файл на текущую страницу
#flastmod и #fsize демонстрируют
Функция: #flastmod файл
#fsize Длина файла
Грамматика:
Код программы:
<!-#flastmod file = имя файла->
<!-#fsize file = имя файла->
<!-#flastmod file = имя файла->
<!-#fsize file = имя файла->
Параметр:
Файл указывает местоположение содержащего файла относительно этого документа, например, info.txt, который представляет документ info.txt в текущем каталоге.
Virtual указывает местоположение относительно корневого каталога документа сервера, например, /hoyi/info.txt
Уведомление:
Имя файла должно иметь расширение.
Пример:
Код программы:
<!-#flastmod file = news.htm->
<!-#flastmod file = news.htm->
Вставьте последнюю дату обновления файла News.htm в текущий каталог в текущую страницу
Код программы:
<!-#fsize file = news.htm->
<!-#fsize file = news.htm->
Введите размер файла news.htm в текущем каталоге в текущую страницу
#Exec демонстрация
эффект:
Вставьте вывод внешней программы в страницу. Он может быть вставлен в программы CGI или вход из обычного приложения, в зависимости от того, являются ли используемые параметры CMD или CGI.
Грамматика:
Код программы:
<!-#exec cmd = имя файла->
<!-#exec cgi = имя файла->
<!-#exec cmd = имя файла->
<!-#exec cgi = имя файла->
Параметр:
CMD регулярные приложения
Программа сценариев CGI CGI
Пример:
Код программы:
<!-#exec cmd = cat /etc /passwd-> отобразит файл пароля
<!-#exec cmd = dir /b-> отобразит список файлов в текущем каталоге
<!-#exec cgi =/cgi-bin/gb.cgi-> Программа CGI GB.CGI будет выполнена.
<!-#exec cgi =/cgi-bin/access_log.cgi-> будет выполнена программа CGI Access_log.cgi.
<!-#exec cmd = cat /etc /passwd-> отобразит файл пароля
<!-#exec cmd = dir /b-> отобразит список файлов в текущем каталоге
<!-#exec cgi =/cgi-bin/gb.cgi-> Программа CGI GB.CGI будет выполнена.
<!-#exec cgi =/cgi-bin/access_log.cgi-> будет выполнена программа CGI Access_log.cgi.
Уведомление:
Как видно из приведенного выше примера, эта инструкция довольно удобна, но есть и проблемы безопасности.
Запрещенный метод:
. Apache, Delete The Options включает в себя строку execcgi в Access.Conf;
. В IIS, чтобы отключить команду #Exec, вы можете изменить ssiexecdisable метадатабазу;
#config
Функция: указывает формат сообщения об ошибке, дате и размер файла, возвращаемых в браузер клиента.
Грамматика:
Код программы:
<!-#configErrmsg = пользовательское сообщение об ошибке->
<!-#configsizefmt = display Unit->
<!-#configtimefmt = Format Display->
<!-#configErrmsg = пользовательское сообщение об ошибке->
<!-#configsizefmt = display Unit->
<!-#configtimefmt = Format Display->
Параметр:
Пользовательские сообщения об ошибках выполнения ERRMSG Custom SSI могут использоваться любым способом.
Метод отображения размера файла sizefmt, по умолчанию метод байта (байты) можно изменить на метод килобита (Abbrev)
Метод дисплея времени TimeFMT, самый гибкий атрибут конфигурации.
Пример: показывает размер файла, которого не существует
Код программы:
<!-#configerRmsg = ошибка выполнения сервера, пожалуйста, свяжитесь с администратором [email protected], спасибо! ->
<!-#fsize file = no file.htm->
<!-#configerRmsg = ошибка выполнения сервера, пожалуйста, свяжитесь с администратором [email protected], спасибо! ->
<!-#fsize file = no file.htm->
Размер отображения файла в килобитах
Код программы:
<!-#configsizefmt = abbrev->
<!-#fsizefile = news.htm->
<!-#configsizefmt = abbrev->
<!-#fsizefile = news.htm->
Время отображения в определенном формате времени
Код программы:
<!-#configtimefmt = %y Год/ %M Месяц %D День и неделя %w Пекин Время %h: %m: %s, %y Год прошла, что %J Дни сегодня-это неделя U-neck y Year->
<!-#echo var = date_local-> показывает, какой день недели, месяца и часового пояса это сегодня
<!-#configtimefmt = сегодняшнее %a, %b, часовой пояс сервера %z, да->
<!-#echo var = date_local->
<!-#configtimefmt = %y Год/ %M Месяц %D День и неделя %w Пекин Время %h: %m: %s, %y Год прошла, что %J Дни сегодня-это неделя U-neck y Year->
<!-#echo var = date_local-> показывает, какой день недели, месяца и часового пояса это сегодня
<!-#configtimefmt = сегодняшнее %a, %b, часовой пояс сервера %z, да->
<!-#echo var = date_local->
XSSI
XSSI (расширенный SSI) представляет собой набор расширенных инструкций SSI, встроенных в модуль MOD-include Apache 1.2 или позже.
Среди них доступные инструкции:
#printenv
#набор
#если
#printenv
Функция: отображает все переменные среды, которые в настоящее время присутствуют в среде веб -сервера.
Синтаксис: программный код:
<!-#printenv->
<!-#printenv->
Параметры: нет
Пример:
Код программы:
<!-#printenv->
<!-#printenv->
#набор
Функция: Вы можете присвоить значения переменным, которые будут использоваться в последующем операторе IF.
Синтаксис: программный код:
<!-#set var = var name value = value value->
<!-#set var = var name value = value value->
Параметры: нет
Пример: программный код:
<!-#set var = colorvalue = red->
<!-#set var = colorvalue = red->
#если
Функция: Создайте страницу, которая может изменить данные, которые отображаются в соответствии с требованиями расчета при использовании оператора IF.
Синтаксис: программный код:
<!-#if expr = $ name = variable value a->
Показать контент
<!-#elif expr = $ variable name = variable value b->
Показать контент
<!-#else->
Показать контент
<!-#endif->
<!-#if expr = $ name = variable value a->
Показать контент
<!-#elif expr = $ variable name = variable value b->
Показать контент
<!-#else->
Показать контент
<!-#endif->
Пример:
Код программы:
<!-#if expr = $ server_name = http: //www.31896.net/-->
Добро пожаловать в область обсуждения безопасности сервера http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Добро пожаловать в Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Добро пожаловать в область обсуждения безопасности сервера!
<!-#endif->
<!-#if expr = $ server_name = http: //www.31896.net/-->
Добро пожаловать в область обсуждения безопасности сервера http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Добро пожаловать в Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Добро пожаловать в область обсуждения безопасности сервера!
<!-#endif->
ПРИМЕЧАНИЕ. Для замены внутренних кавычек используются бэк -черты, используемые в предыдущих инструкциях, так что они не интерпретируются как конечные выражения. Не опускается.
1. Команда конфигурации
Команда конфигурации в основном используется для изменения настройки по умолчанию SSI. в:
ERRMSG: Установите сообщение об ошибке по умолчанию. Чтобы вернуть информацию об ошибке, установленную пользователем, нормально, параметр ERRMSG должен быть размещен перед другими командами SSI в файле HTML, в противном случае клиент может отображать только информацию об ошибке по умолчанию, а не пользовательскую информацию, установленную пользователем.
<!-#configerRmsg = ошибка! Пожалуйста, напишите [email protected] ->
TimeFMT: определяет формат использования даты и времени. Параметр TimeFMT должен использоваться перед командой Echo.
<!-#configtimefmt = %a, %b %d, %y->
<!-#echo var = last_modified->
Результаты отображаются как:
Среда, 12 апреля 2000 г.
Возможно, пользователи не знакомы с %A %B %D, используемой в приведенном выше примере. Давайте суммируем некоторые из более часто используемых форматов даты и времени в SSI в виде таблицы.
SizeFMT: определяет, выражается ли размер файла в байтах, килобитах или мегабайтах. Если в байтах, значение параметра составляет байты; Аббревиатура может использоваться для килобитов и мегабайт. Аналогичным образом, параметр SizeFMT должен быть размещен до использования команды FSIZE.
<!-#configsizefmt = bytes->
<!-#fsize file = index.html->
2. Включите команду
Команда включения может вставить текст или изображения из других документов в в настоящее время проанализированный документ, который является ключом ко всему SSI. Через команду включить вам нужно только изменить один файл, чтобы мгновенно обновить весь сайт!
Команда включения имеет два разных параметра:
Виртуальный: дает виртуальный путь к документу на стороне сервера. Например:
<#include virtual =/incluct/header.html ->
Файл: дает относительный путь к текущему каталогу, где ../ нельзя использовать, и не может быть использован абсолютный путь. Например:
<#include file = header.html ->
Это требует, чтобы каждый каталог содержал файл header.html.
3. Echo Command
Команда Echo может отображать следующие переменные среды:
Document_name: отображает имя текущего документа.
<!-#echo var = document_name->
Результаты отображаются как:
index.html
Document_uri: отображает виртуальный путь к текущему документу. Например:
<!-#echo var = document_uri->
Результаты отображаются как:
/Yourdirectory/yourfilename.html
По мере того, как веб -сайт продолжает расти, те URL -адреса, которые становятся длиннее и длиннее, определенно будут головной болью. Если вы используете SSI, все будет решено. Потому что мы можем объединить доменное имя веб -сайта и команду SSI, чтобы отобразить полный URL, то есть:
http: // yourdomain%3c!-/#echo var = & ... uot; ->
Query_string_unescaped: отображает строку запроса, отправленную клиентом, которая не была сбежалась, со всеми специальными символами, которым предшествуют экологичные символы. Например:
<!-#echo var = Query_string_unescaped->
Date_local: отображает дату и время настройки сервера. Пользователи могут настроить выходную информацию на основе параметра TimeFMT команды Config. Например:
<!-#configtimefmt = %a, %d %b, в год %y->
<!-#echo var = date_local->
Результаты отображаются как:
Суббота, 15 апреля, в 2000 году
Date_gmt: функция такая же, как Date_local, за исключением того, что она возвращает дату на основе GMT. Например:
<!-#echo var = date_gmt->
LAST_MODIFIT: Отображает последнее время обновления текущего документа. Точно так же это очень практичная особенность в SSI. Пока вы добавляете следующий простой текст в документ HTML, вы можете динамически отобразить время обновления на странице.
<!-#echo var = last_modified->
Переменные среды CGI
В дополнение к переменным среды SSI, команда ECHO также может отображать следующие переменные среды CGI:
Server_software: отображает имя и версию программного обеспечения Server. Например:
<!-#echo var = server_software->
Server_name: отображает имя хоста сервера, псевдоним DNS или IP -адрес. Например:
<!-#echo var = server_name->
Server_protocol: отображает имя и версию протокола, используемое клиентским запросом, например, http/1.0. Например:
<!-#echo var = server_protocol->
Server_port: отображает порт ответа сервера. Например:
<!-#echo var = server_port->
Request_method: отображает метод запроса документа клиента, включая Get, Head и Post. Например:
<!-#echo var = request_method->
Remote_host: отображает имя хоста клиента, который выпустил сообщение запроса.
<!-#echo var = remote_host->
Remote_addr: отображает IP -адрес клиента, который выпустил информацию о запросе.
<!-#echo var = remote_addr->
AUTH_TYPE: отображает метод аутентификации пользовательской идентификации.
<!-#echo var = auth_type->
Remote_user: отображает имя учетной записи, используемое пользователем, получающим доступ к защищенной странице.
<!-#echo var = remote_user->
4. fsize: отображает размер указанного файла. Вы можете настроить выходной формат с параметром sizefmt команды Config.
<!-#fsize file = index_working.html->
5. Flastmod: отображает последнюю дату изменения указанного файла. Вы можете управлять выходным форматом с параметром TimeFMT команды конфигурации.
<!-#configtimefmt = %a, %d %b, в год %y->
<!-#flastmod file = file.html->
Здесь мы можем использовать параметр Flastmod для отображения даты обновления всех связанных страниц на странице. Метод заключается в следующем:
<!-#configtimefmt = %b %d, %y->
<A href =/directory/file.html> file </a>
<!-#flastmod virtual =/directory/file.html->
<A href =/ore_directory/ore_file.html> еще один файл </a>
<!-#flastmod virtual =/ore_directory/ore_file.html->
Результаты отображаются как:
Файл 19 апреля 2000 г.
Еще один файл 8 января 2000 г.
6. Exec
Команда EXEC может выполнять сценарии CGI или команды оболочки. Как использовать его следующим образом:
CMD: используйте /bin /sh для выполнения указанной строки. Если SSI использует опцию InclateNoExec, команда будет заблокирована.
CGI: можно использовать для выполнения сценариев CGI. Например, в следующем примере используйте программу скрипта counter.pl в каталоге сервера CGI-бин, чтобы разместить счетчик на каждой странице:
<!-#exec cgi =/cgi-bin/counter.pl->