SSI (programare)

SSI ( Server Side Includes - server-side includes) este un limbaj simplu pentru „asamblarea” dinamică a paginilor web pe server din componente separate și emiterea documentului HTML rezultat către client. Implementat pe serverul web Apache folosind modulul mod_include . Activată în setările implicite ale serverului web, capacitatea de a include fișiere HTML, astfel încât pentru a utiliza instrucțiunile, fișierul trebuie să se termine cu extensia .shtml , .stmsau.shtm

Trebuie reținut că unele servicii nu execută comenzi SSI dacă extensia fișierului este diferită de cea de mai sus, de exemplu, .html.

Sintaxa SSI vă permite să includeți alte pagini SSI în textul paginii, să apelați scripturi CGI externe , să implementați operații condiționate (dacă / altfel), să lucrați cu variabile etc. Datorită simplității extreme a limbajului, construirea paginilor SSI este foarte rapidă. , cu toate acestea, multe posibilități ale limbajelor de programare cu drepturi depline, de exemplu, lucrul cu fișiere, sunt absente în SSI.

Unele elemente ale sintaxei SSI sunt folosite și în alte limbaje de scripting , cum ar fi ASP .

Comenzi SSI de bază

Descriere

config - controlează diferite aspecte ale scanării. Atributele sale pot fi:

Variabile pentru sizefmt :

<!--#config sizefmt="abbrev"--> Afișează dimensiunea fișierului în kiloocteți: (17k) <!--#config sizefmt="bytes"--> Afișează dimensiunea fișierului în octeți (17.076)

Variabile pentru timefmt :

Format Descriere Exemplu
%A Numele scurt al zilei săptămânii Lun
%A Numele complet al zilei săptămânii luni
%b Abrevierea numelui lunii Dec
%B Numele întregii luni decembrie
%d Ziua lunii 01 (nu 1)
%D Data în formatul „%m/%d/%y” 31.12.99
%e Ziua lunii 13
%H Ore în format de 24 de ore 13
%I Ore în format de 12 ore 01
%j zi a anului 235
%m Numărul lunii 01
%M minute 03
%p AM/PM (AM/PM) A.M
%r Ora în formatul „I:M:S p” 23:35:46
%S secunde 34
%s Timp în secunde de la 01/01/1970 957228726
%T Ora în formatul „%H:%M:%S” 14:05:34
%U Săptămâna anului 16
%w Numărul zilei săptămânii patru
%y An în format YY 99
%Y An în format AAAA 1999
%Z fus orar MSK

Rețineți că comenzile #config sizefmt și #config timefmt afectează toate comenzile SSI asociate de unde au fost apelate în partea de jos a paginii. Prin urmare, fiecare apel la comenzile #flastmod și #fsize este cel mai bine furnizat cu propria sa comandă #config.

set - setează valoarea unei variabile. Atributele sale sunt var, care definește numele variabilei și value, care definește valoarea acesteia.

Înlocuirea variabilelor se face în interiorul șirurilor ghilimele în majoritatea argumentelor directivei SSI. În aceste cazuri, semnul dolarului poate fi inserat precedându-l cu o oblică:

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

Pentru a preveni ambiguitatea, puteți include numele variabilei între acolade:

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

Ca urmare a acestei atribuiri, variabila Zed va avea valoarea „Xbc_Y” dacă variabila a este egală cu X și variabila abc este egală cu Y.

printenv - Imprimă o listă de așa-numitele „ variabile de mediu ” cu valorile lor. Apelat fără parametri.

Variabile de mediu:

echo - tipărește valoarea variabilei SSI setate. Atribute valide:

flastmod - afișează data ultimei modificări a fișierului în formatul definit folosind timefmt. Atributele sunt similare cu atributele fsize.

fsize - Afișează dimensiunea fișierului în formatul definit folosind sizefmt. Atribute valide:

include - include textul altui document sau fișier în fișierul scanat. Toate regulile de restricție de acces stabilite sunt aplicate fișierului inclus. Dacă directorul din care este inclus fișierul are setată opțiunea IncludesNOEXEC și includerea documentului ar duce la rularea programului, documentul nu este inclus și este afișat un mesaj de eroare. Scripturile CGI sunt invocate ca de obicei cu o adresă URL, care poate conține un șir de interogare codificat. Locația fișierului este specificată folosind atribute:

Declarații condiționale

Elementele de bază ale controlului sunt:

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

Elementele elif și else sunt opționale.

Elementul endif se termină cu elementul if și este necesar.

test_condition poate fi una dintre următoarele:

Dacă șirul2 are forma /șir/ atunci este interpretat ca o expresie regulată. Sintaxa lor este similară cu cea a expresiilor regulate din comanda Unix egrep (vezi Expresii regulate )
(test_condition) adevărat dacă test_condition este adevărat;
! test_condition este adevărat dacă test_condition este fals
test_condition1 && test_condition2 adevărat dacă atât test_condition1, cât și test_condition2 sunt adevărate
condiție_test1 || test_condition2 este adevărat dacă cel puțin test_condition1 sau test_condition2 este adevărat.
„=" și „!=" au prioritate față de „&&” și „||” și „!” are cea mai mare prioritate.

Orice lucru care nu este recunoscut ca variabilă este considerat un șir. Dacă șirul are spații sau tab-uri, atunci trebuie să fie cuprins între ghilimele.
Ceea ce merită reținut este că este mai bine să nu folosiți comenzi SSI atunci când creați pagini în editori precum Front Page - de obicei nu le înțeleg și le aruncă și că o comandă SSI nu poate fi apelată de la alta (deoarece este imposibil apelarea o comandă SSI dintr-un script și un script dintr-un script) .

Exemple

Setarea mesajului de gestionare a erorilor

<!--#config errmsg="[A apărut o eroare la deschiderea paginii. Vă rugăm să anunțați proprietarul site-ului.]" -->

Setarea formatului de ieșire a datei și orei

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

Setarea variabilelor

http://<!--#echo var="HTTP_HOST"--><!--#echo var="DOCUMENT_URI"--> Ieșire: http://ru.wikipedia.org/w/index.php?title=SSI_(programare)

Introduceți data modificării fișierului

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

Lipirea conținutului unui fișier

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

Verificarea stării

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