Lato server include - Server Side Includes

Server Side Include ( SSI ) è un linguaggio di scripting lato server interpretato semplice utilizzato quasi esclusivamente per il World Wide Web . È molto utile per includere il contenuto di uno o più file in una pagina web su un server web (vedi sotto), usando la sua #includedirettiva. Questo potrebbe essere comunemente un pezzo di codice comune in un sito, come un'intestazione di pagina, un piè di pagina e un menu di navigazione. SSI contiene anche direttive di controllo per funzioni condizionali e direttive per chiamare programmi esterni. E 'supportato da Apache , LiteSpeed , nginx , IIS così come W3C Jigsaw 's. Ha le sue radici in NCSA HTTPd .

Affinché un server Web riconosca un file HTML abilitato per SSI e quindi esegua queste istruzioni, il nome del file deve terminare con un'estensione speciale , per impostazione predefinita .shtml, .stm, .shtm, oppure, se il server è configurato per consentire ciò, impostare l'esecuzione bit del file.

Design

Essendo un semplice linguaggio di programmazione, SSI supporta un solo tipo : testo. Il suo flusso di controllo è piuttosto semplice, la scelta è supportata, ma i loop non sono supportati in modo nativo e possono essere eseguiti solo tramite ricorsione utilizzando include o utilizzando il reindirizzamento HTTP . Il design semplice del linguaggio lo rende più facile da imparare e utilizzare rispetto alla maggior parte dei linguaggi di scripting lato server, mentre l'elaborazione complicata lato server viene spesso eseguita con uno dei linguaggi di programmazione più ricchi di funzionalità . SSI è Turing completo .

SSI ha una sintassi semplice: <!--#directive parameter=value parameter=value -->. Le direttive sono inserite nei commenti HTML in modo che se SSI non è abilitato, gli utenti non vedranno le direttive SSI sulla pagina, a meno che non guardino alla sua fonte. Si noti che la sintassi non consente spazi tra il "<" iniziale e la direttiva. Il tutorial di Apache su SSI stabilisce che il formato richiede un carattere spazio prima di "-->" che chiude l'elemento.

Esempi

Una pagina web contenente una quotazione giornaliera potrebbe includere la quotazione inserendo il seguente codice nel file della pagina web:

<!--#include virtual="../quote.txt" -->

Con una modifica del quote.txtfile, tutte le pagine che includono il file visualizzeranno l'ultima quotazione giornaliera. L'inclusione non è limitata ai file e può anche essere l'output di testo da un programma o il valore di una variabile di sistema come l'ora corrente.

Direttive

Comune

Le seguenti sono le direttive SSI dei tempi di NCSA HTTPd (anni '90). Sono supportati da tutte le implementazioni.

Direttive NCSA HTTPd SSI
Direttiva Parametri Descrizione Esempio
include file o virtuale Questa è probabilmente la direttiva SSI più utilizzata. Permette il contenuto di un documento da transclusa in un altro. Il documento incluso può essere esso stesso un altro file abilitato per SSI. I parametri fileo virtualspecificano il file ( pagina HTML , file di testo, script, ecc.) da includere. NCSA HTTPd non supportava CGI tramite include, ma in seguito Apache HTTPd lo fa. Se il processo non ha accesso per leggere il file o eseguire lo script, l'inclusione avrà esito negativo. Il parametro " virtual" gestisce qualsiasi percorso di directory come se fosse parte dell'URL, mentre " file" gestisce qualsiasi percorso di directory come nel filesystem sottostante. Quando si usa " file" è vietato fare riferimento a percorsi assoluti o ../accedere a una directory padre. La documentazione di Apache consiglia di utilizzare " virtual" in preferenza di " file".
<!--#include virtual="menu.cgi" -->
<!--#include file="footer.html" -->
exec cgi o cmd Questa direttiva esegue un programma, uno script o un comando di shell sul server. Il parametro cmd specifica un comando lato server; il parametro cgi specifica il percorso di uno script CGI . Il PATH_INFOand QUERY_STRINGdello script SSI corrente verrà passato allo script CGI, di conseguenza dovrebbe essere usato "exec cgi" invece di "include virtual".
<!--#exec cgi="/cgi-bin/foo.cgi" -->
<!--#exec cmd="ls -l" -->
echo varia Questa direttiva visualizza il contenuto di una variabile di ambiente HTTP specificata . Le variabili includono , , e .HTTP_USER_AGENTLAST_MODIFIEDHTTP_ACCEPT
Il tuo indirizzo IP è:
<!--#echo var="REMOTE_ADDR" -->
config timefmt, sizefmt o errmsg Questa direttiva configura i formati di visualizzazione per la data, l'ora, la dimensione del file e il messaggio di errore (restituito quando un comando SSI fallisce).
<!--#config timefmt="%y %m %d" -->
<!--#config sizefmt="bytes" -->
<!--#config errmsg="Comando SSI fallito!" -->
flastmod e fsize file o virtuale Queste direttive visualizzano la data dell'ultima modifica del documento specificato o le dimensioni del documento specificato. Il file oi parametri virtuali specificano il documento da utilizzare. Il parametro file definisce il documento come relativo al percorso del documento; il parametro virtuale definisce il documento come relativo alla radice del documento.
<!--#flastmod virtual="index.html" -->
<!--#fsize file="script.pl" -->

Direttive di controllo

Le direttive di controllo vengono successivamente aggiunte a SSI. Includono l'onnipresente controllo del flusso if-elif-else-endif e la scrittura delle variabili, nonché funzionalità più esotiche come i loop che si trovano solo in alcune implementazioni.

Direttiva Parametri Descrizione Esempio Trovato in
espr L' istruzione if . Utilizzato per i test delle condizioni che possono determinare e generare più pagine logiche da un'unica pagina fisica. elifè una scorciatoia per nidificato else-if. elsee endifnon accettare parametri.

La sintassi dell'espressione varia tra le implementazioni. I controlli di esistenza variabile e uguaglianza/regex sono comunemente supportati. Jigsaw utilizza invece espressioni suddivise su più attributi.

<!--#if expr="${Sec_Nav}" -->
<!--#include virtual="nav_secondario.txt" -->
<!--#elif expr="${Pri_Nav}" -->
<!--#include virtual="primary_nav.txt" -->
<!--#else -->
<!--#include virtual="articolo.txt" -->
<!--#endif -->
Onnipresente.
set var, valore Imposta il valore di una variabile SSI. Apache fornisce parametri aggiuntivi per le codifiche .
<!--#set var="foo" value="bar" -->
Apache, Nginx
printenv   Questa direttiva restituisce un elenco di tutte le variabili SSI e dei relativi valori, comprese le variabili ambientali e definite dall'utente. Non ha attributi.
<!--#printenv -->
Apache

Guarda anche

Appunti

Riferimenti

link esterno