ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | OpenSource | PhpNuke | Programming | SysAdm | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
SSI SERVER SIDE INCLUDES
Server Side Include: il puzzle del Web
Cosa sono gli SSI
SSI e Apache
Inclusioni
Variabili
Controllo di Flusso
Conclusioni


<<< Variabili >>>

Ogni pagina quando viene chiamata contiene un "ambiente di esecuzione" che sono previste per essere comunicate agli script CGI. Non sarebbe di nostro interesse questo fatto se non fosse che possono essere utilizzate anche dai comandi SSI. Per vedere tutte le variabili disponibili è possibile utilizzare il comando:


<!--#printenv -->


Questo comando produce un output come quello mostrato in figura 1. Tra le varie informazioni disponibili è possibile notare REQUEST_URI, che indica il documento richiesto senza il nome del sito, o la QUERY_STRING, che è la stringa utilizzata per specificare i parametri opzionali di una pagina. Per intenderci, in una richiesta come:

http://www.ditta.it/file.htm?a=1&b=2


DOCUMENT_ROOT=/home/httpd/html
HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
HTTP_ACCEPT_CHARSET=iso-8859-1,*,utf-8
HTTP_ACCEPT_ENCODING=gzip
HTTP_ACCEPT_LANGUAGE=en
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=127.1
HTTP_REFERER=http://127.1/ssi/config.shtml
HTTP_USER_AGENT=Mozilla/4.61 [en] (X11; I; Linux 2.2.5-15 i586; Nav)
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=1075
SCRIPT_FILENAME=/home/httpd/html/ssi/printenv.shtml
SERVER_ADDR=127.0.0.1
SERVER_ADMIN=root@localhost
SERVER_NAME=212.131.172.189
SERVER_PORT=80
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache/1.3.9 (Unix)  (Red Hat/Linux) ApacheJServ/1.0 PHP/4.0b3
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.0
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/ssi/printenv.shtml
SCRIPT_NAME=/ssi/printenv.shtml
DATE_LOCAL=Wednesday, 16-Feb-2000 21:27:44 CET
DATE_GMT=Wednesday, 16-Feb-2000 20:27:44 GMT
LAST_MODIFIED=Tuesday, 15-Feb-2000 21:35:37 CET
DOCUMENT_URI=/ssi/printenv.shtml
DOCUMENT_PATH_INFO=
USER_NAME=msciab
DOCUMENT_NAME=printenv.shtml

Figura 1


la query string è a=1&b=2, cioè la parte dell'URL che segue il punto interrogativo, e che solitamente viene generata automaticamente dalle form per il passaggio dell'input dell'utente.

Utilizzando queste variabili con i comandi di controllo che vedremo nel prossimo paragrafo è possibile ottenere utili effetti, come pagine che vengono visualizzate in maniera diversa a seconda dei parametri, senza che si debba ricorrere alla programmazione di CGI. In ogni caso una variabile può essere semplicemente stampata con il comando SSI


Benvenuto, <!--#echo var="REMOTE_ADDR" -->


Col comando comando precedente è possibile visualizzare all'utente il suo indirizzo IP. In generale è possibile inserire particolari impostazioni nei file di configurazione di Apache per fare si che vengano impostate determinate variabili al seconda di varie condizioni. Ci sono delle direttive come BrowserMatch o SetEnvIf, che permettono di fare in modo che certe variabili vengano impostate per esempio per indicare il browser (Netscape o Explorer) o altre condizioni anche più complesse. Per un sito che usa il Dynamic HTML generato in due modalità questo può essere molto utile.

Prima di entrare nei dettagli relativi alle pagine condizionali, ricordiamo due comandi che permettono di stampare la dimensione di un file e la data di ultima modifica. Questi SSI possono essere utili quando si voglia inserire in automatico informazioni come la data di ultima modifica di una pagina o la dimensione di un file. Queste informazioni si ottengono con


<!--#flastmod virtual="file.shtml" -->
<!--#fsize virtual="file.shtml" -->

Anche in questo caso si può usare file al posto di virtual per specificare un path fisico di un file. L'output dei due comandi precedenti, come pure le variabili DATE_LOCAL che contiene l'ora corrente può essere modificato utilizzando il comando SSI config. A titolo di esempio consideriamo il seguente listato:


<!--#config timefmt="%d/%m/%Y %H:%M:%S" sizefmt="bytes" -->
Data: <!--#echo var="DATE_LOCAL" --> (GMT: <!--#echo var="DATE_GMT" -->)<br>
Query: <tt><!--#echo var="QUERY_STRING" --></tt><br>
Request: <tt><!--#echo var="REQUEST_URI" --></tt><br>
Dimensione:  <!--#fsize virtual="config.shtml" --><br>
Ultima modifica <!--#flastmod virtual="config.shtml" --><br>

Il risultato è mostrato in figura 2. Il significato di timefmt può essere visto con il comando Unix man strfmt, mentre sizefmt può essere bytes (per visaluzzare la dimensione esatta in byte dei file) o abbrev (per visualizzarla abbreviata, come 1k o 2M)





ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com