Въведение
Технологията SSI позволява изпълнението в реално време с относително прости средства на примитиви (команди) върху HTTP сървъра. Резултатът от изпълнението е HTML страница, визуализирана при клиента. Технологията не е обект на стандартизиране, но се поддържа от по-разпространените HTTP сървъри. Възможностите на SSI и неговите надстройки SSI+ включват извеждане на дата, броя на посетителите, зареждане на страници по условие, изпращане на електронна поща, справки от бази данни и др.
Проблем със съвместимост на SSI с разпространените Web браузъри не съществува, понеже командите се интерпретират и изпълняват от HTTP сървър (Server Site) вмъкнати (Includes) в HTML страница, а резултатът от интерпретацията на сървъра се формира като HTML код. Проблем може да възникне, ако самият HTTP сървър не поддържа тази технология или не е недостъпна за клиента поради липса на съответните привилегии. Някои сървъри може да поддържат само определено множество от SSI команди, което е отразено в тяхната документация.
За използване на SSI технология е необходимо разширението на HTML документа, съдържащ SSI команди, да бъде .shtml, вместо .html. Разширения .sht и .shtm също са приемливи, но това зависи от HTTP сървъра. Страница с това разширение предизвиква в HTTP сървър, съвместим с SSI, процес на претърсването й за команди, които трябва да бъдат изпълнени преди изпращането на страницата при клиента за визуализация от неговия браузър. Този процес в сървъра е познат като parsing.
HTTP сървърите на Netscape, Microsoft и Apache поддържат технологията SSI, но множеството от разпознавани команди не е еднакво.
Команди
Общият формат на командите в SSI технологията е:
| <!--#<tag><var> --> |
Използваните елементи са: break, config, echo, email, exec, if, include, fsize, flastmod, label, goto и odbc. Резервирана "дума" е комбинацията "&&", поставена пред име на променлива, предизвиква нейното преизчисление последвано от изпълнение на съответната SSI команда.
Всяка команда започва с коментарен низ "<!--", което е и своеобразна форма на защите при наличие на несъвместимости, т.е. тези редове няма да се интерпретират и да предизвкат страничен ефект при сървъра или браузъра. Индикация към сървъра, че следва SSI команда е символът "#", поставен веднага след коментара. Така, всяка SSI команда започва с "<!--#" и завършва с " -->" (внимание, предхожда се от шпация). Някои сървъри възприемат завършващия елемент и без шпация, но правилото е да има интервал между съдържанието на командата и завършващият я елемент.
break
Елементът играе ролята на терминиращ знак (край) за една HTML страница. Елементът може да се използва в комбинация с други за изпращане на части от страница при клиента в зависимост от определени условия.
Синтаксис:
| <!--#break --> |
config
Елементът позволява конфигуриране или създаване на шаблони при извеждане на информация от други SSI елементи. За целта се използват параметри:
|
|
|
|
| %A - Пълно изписване на деня от седмицата | %a - Съкратено изписване на деня от седмицата | |
| %B - Пълно наименование на месеца | %b - Съкратено наименование на месеца | |
| %Y - Изписва годината в четири знака | %y - Изписва годината в два знака | |
| %D - Дата с формат mm/dd/yy | %d - Ден от месеца | |
| %H - Извежда часа от1 до 24 | %i - Извежда часа от1 до 12 | |
| %M - Извежда минутите от 0 до 60 | %m - Извежда месеците от 01 до 12 | |
| %R - Извежда часа като %H: %M | %r - Извежда часа като %I: %M: %S: %p | |
| %p - Добавя към часа a.m. или p.m. | %T - Изведжа часа като %H: %M: %S | |
| %S - Извежда секундите от 0 до 60 | %Z - Времева зона |
echo
Елементът echo позволява вмъкването на данни в една HTML. Асоциираната към елемента променлива var трансформира стойността си в символен низ, който я замества в HTML кода на страницата.
Синтаксис:
| <!--#echo var=cName --> |
Променливата var може да бъде определена като изход от формуляр чрез метода POST или чрез глобална променлива. При първия случай на промеливате var се присвоява името на съответната променлива от формуляра. Във втория случай, списъкът от глобални промеливи зависи от HTTP сървъра. Той може да бъде по-богат или по-кратът. Често използваните променливи са следните:
Елементът email позволява изпращане на електронна поща при достъп до определена страница или от формуляр. Параметрите на елемента са следните:
Елементът exec позволява изпълнението на произволна команда от операционната система на сървъра.
Синтаксис:
| <!--#exec cmd|cgi --> |
Променливите могат да бъдат:
Елементът fsize позволява вмъкването на размер на файл като параметър, заместващ позицията на SSI командата в HTML страница.
Синтаксис:
| <!--#fsize virtual|File="file_name" --> |
Променливите могат да бъдат:
Елементът flastmod позволява вмъкването на датата на последна модификация на файл като параметър, заместващ позицията на SSI командата в HTML страница.
Синтаксис:
| <!--#flastmod virtual|File="file_name" --> |
Променливите могат да бъдат:
Елементът goto позволява преход към етикет (#label) без да бъдат изпълнявани програмните редове между елемента и етикета.
Синтаксис:
| <!--#goto ="'label'" --> |
if
Елементът if позволява изпълнението на определено действие при определени условия.
Синтаксис:
| <!--#if "операнд1" оператор "операнд2" операция --> |
където:
Елементът include позволява вмъкване на съдържанието на файл в HTML страница. SSI+ технологията е рекурсивна. Всеки вмъкнат документ може да съдържа SSI+ елементи, които да предизвикват вмъкването на други файлове.
Синтаксис:
| <!--#include virtual|File="file_name" --> |
Променливите могат да бъдат:
Елементът label задава позицията на етикет, изпозван за преход от елемент goto.
Синтаксис:
| <!--#label ="label_name" --> |
odbc
Елементът odbc позволява изпращане на заявки към база данни.
За целта са налице
няколко odbc елемента:
| <!--#connect="datasource,username,password" --> |
| <!--#debug низ --> |
| <!--#format="списък от шаблони" --> |
| <!--#statement="SQL заявка" --> |
| <html>
<head><title>SSI - пример</title></head> <body> <p>Този ред се извежда в полето на документа като самостоятелен параграф<i><!--#include file="incl.txt" --></i>. <p>Следващите редове извеждат някои системни променливи</p> Дата : <!--#config timefmt="%a %d %b %y" --><!--#echo var="DATE_GMT"--><br> Документ : <!--#echo var="DOCUMENT_NAME"--><br> Дата : <!--#config timefmt="%A %B %d %Y %R %Z" --><!--#echo var="DATE_LOCAL"--><br> Адрес : <!--#echo var="REMOTE_ADDR" --><br> Браузър : <!--#echo var="HTTP_USER_AGENT" --><br> Размер : <!--#fsize virtual="shtml\break.shtml" --><br> </body> </html> |
Кодът съдържа команди общи за почти всички HTTP сървъри поддържащи SSI технология, В примера с команда include се вмъква в документа съдържанието на файл incl.txt, чието съдържание е показано на Екран 4.
Резултатът от интерпретацията на примера е показан на Екран 5.