SSI (programování)

SSI ( Server Side include - server-side inclusions) je jednoduchý jazyk pro dynamické "sestavení" webových stránek na serveru ze samostatných komponent a odeslání výsledného HTML dokumentu klientovi. Implementováno na webovém serveru Apache pomocí modulu mod_include . Ve výchozím nastavení webového serveru povolena možnost vkládat HTML soubory, takže pro použití návodu musí soubor končit příponou .shtml , .stmpopř ..shtm

Je třeba mít na paměti, že některé služby neprovádějí příkazy SSI, pokud je přípona souboru odlišná od výše uvedené, například .html.

Syntaxe SSI umožňuje zahrnout do textu stránky další stránky SSI, volat externí CGI skripty, implementovat podmíněné operace (if / else), pracovat s proměnnými atd. Díky extrémní jednoduchosti jazyka je vytváření stránek SSI velmi rychlé mnoho možností plnohodnotných programovacích jazyků, například práce se soubory, však v SSI chybí.

Některé prvky syntaxe SSI se také používají v jiných skriptovacích jazycích , jako je ASP .

Základní příkazy SSI

Popis

config - řídí různé aspekty kontroly. Jeho atributy mohou být:

Proměnné pro sizefmt :

<!--#config sizefmt="abbrev"--> Zobrazuje velikost souboru v kilobajtech: (17 kB) <!--#config sizefmt="bytes"--> Zobrazuje velikost souboru v bajtech (17 076)

Proměnné pro timefmt :

Formát Popis Příklad
%A Krátký název dne v týdnu Po
%A Celé jméno dne v týdnu pondělí
%b Zkratka názvu měsíce prosinec
%B Název celého měsíce prosinec
%d den v měsíci 01 (ne 1)
%D Datum ve formátu "%m/%d/%y" 31. 12. 99
%E den v měsíci 13
%H Hodiny ve 24hodinovém formátu 13
%I Hodiny ve 12hodinovém formátu 01
%j den v roce 235
% m Číslo měsíce 01
%M minut 03
%p AM/PM (AM/PM) DOPOLEDNE
%r Čas ve formátu "I:M:S p" 23:35:46
%S Sekundy 34
%s Čas v sekundách od 01.01.1970 957228726
%T Čas ve formátu "%H:%M:%S" 14:05:34
%U Týden v roce 16
% hm Číslo dne v týdnu čtyři
%y Rok ve formátu YY 99
%Y Rok ve formátu YYYY 1999
%Z Časové pásmo MSK

Všimněte si, že příkazy #config sizefmt a #config timefmt ovlivňují všechny související příkazy SSI, odkud byly volány na konec stránky. Každé volání příkazů #flastmod a #fsize je proto nejlépe opatřeno vlastním příkazem #config.

set - nastavuje hodnotu proměnné. Jeho atributy jsou var, který definuje název proměnné, a value, která definuje její hodnotu.

Substituce proměnných se provádí uvnitř řetězců v uvozovkách ve většině argumentů direktivy SSI. V těchto případech lze znak dolaru vložit před něj s lomítkem:

<!--#if expr="$a = \$test" -->

Abyste předešli nejednoznačnosti, můžete název proměnné uzavřít do složených závorek:

<!--#set var="Zed" value="${a}bc_${abc}" -->

V důsledku tohoto přiřazení bude mít proměnná Zed hodnotu „Xbc_Y“, pokud se proměnná a rovná X a proměnná abc se rovná Y.

printenv - Vytiskne seznam tzv. " proměnných prostředí " s jejich hodnotami. Voláno bez parametrů.

Proměnné prostředí:

echo - vypíše hodnotu nastavené proměnné SSI. Platné atributy:

flastmod - zobrazí datum poslední úpravy souboru ve formátu definovaném pomocí timefmt. Atributy jsou podobné atributům fsize.

fsize – Zobrazí velikost souboru ve formátu definovaném pomocí sizefmt. Platné atributy:

zahrnout - zahrne text jiného dokumentu nebo souboru do naskenovaného souboru. Na zahrnutý soubor se použijí všechna zavedená pravidla omezení přístupu. Pokud má adresář, ze kterého je soubor zahrnut, nastavena možnost ZahrnujeNOEXEC a zahrnutí dokumentu by způsobilo spuštění programu, dokument nebude zahrnut a zobrazí se chybová zpráva. Skripty CGI se vyvolávají jako obvykle s adresou URL, která může obsahovat zakódovaný řetězec dotazu. Umístění souboru je určeno pomocí atributů:

Podmíněné příkazy

Základní prvky ovládání jsou:

<!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif -->

Prvky elif a else jsou volitelné.

Prvek endif ukončuje prvek if a je vyžadován.

test_condition může být jedna z následujících:

Pokud má řetězec2 tvar /řetězec/ , pak je interpretován jako regulární výraz. Jejich syntaxe je podobná syntaxi regulárních výrazů v unixovém příkazu egrep (viz Regulární výrazy )
(test_condition) true, pokud je test_condition pravdivá;
! test_condition je pravdivý, pokud je test_condition nepravdivý
test_condition1 && test_condition2 true, pokud oba test_condition1 a test_condition2 jsou pravdivé
test_condition1 || test_condition2 je pravdivý, pokud je pravdivý alespoň test_condition1 nebo test_condition2.
"=" a "!=" mají přednost před "&&" a "||" a "!" má nejvyšší prioritu.

Cokoli, co není rozpoznáno jako proměnná, je považováno za řetězec. Pokud má řetězec mezery nebo tabulátory, musí být uzavřen v uvozovkách.
Co stojí za připomenutí, je lepší nepoužívat SSI příkazy při vytváření stránek v editorech jako je Front Page - většinou jim nerozumí a zahazují je a že jeden SSI příkaz nelze volat z jiného (protože není možné volat příkaz SSI ze skriptu a skript ze skriptu) .

Příklady

Nastavení zprávy obsluhy chyb

<!--#config errmsg="[Při otevírání stránky došlo k chybě. Informujte prosím vlastníka webu.]" -->

Nastavení výstupního formátu data a času

<!--#config timefmt="%d/%m/%y" --> Výstup: 03/07/06 <!--#config timefmt="%d/%m/%Y, %H:%M:%S" --> Výstup: 03/07/2006, 20:16:33

Nastavení proměnných

http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> Výstup: http://ru.wikipedia.org/w/index.php?title=SSI_(programování)

Vložit datum úpravy souboru

<!--#flastmod file="file.html"-->

Vložení obsahu souboru

<!--#include file="footer.html"--> <!--#include virtual="header.asp"--> <!--#include virtual="/right.links.txt"-->

Kontrola stavu

<!--#if expr="test_condition"--> <!--#elif expr="test_condition"--> <!--#else--> <!--#endif-->