Siamo ora pronti ad utilizzare i comandi UNIX visti nella pagina precedente per due esperimenti dedicati al passaggio di parametri tramite variabili d'ambiente. Lo schema generale è sempre il medesimo:

1) dal client costringiamo il server a passare i parametri ad un gateway program tramite il metodo delle variabili d'ambiente

2) escludiamo il server (e quindi anche il client) e colloquiamo con lo stesso gateway program, passandogli i parametri tramite variabili d'ambiente, come se il server fossimo noi stessi.

Il gateway program che adotteremo per i nostri esperimenti è il programma nph-count, a disposizione di molti www server, responsabile del contatore presente in molte pagine web (il numero che tiene traccia del numero di accessi alla pagina stessa).
Questo gateway prende due coppie nome=valore come input:

e genera come output un'immagine in formato gif rappresentante un contatore di numero cifre, il cui valore è di una unità più alto del valore relativo all'ultima chiamata del programma con la stessa parola_chiave. Ovviamente, per poter funzionare, il programma nph-count gestisce una tabella (un file) in cui memorizza le corrispondenze parola_chiave - numero_accessi, in maniera trasparente all'utente.
Nella pagina web del nostro dipartimento, per esempio, compare la riga "Sei il visitatore numero <IMG SRC="/cgi-bin/nph-count?width=5&link=Dip-Inf.html" >". Quando un client www ha ottenuto la pagina html dal nostro server web, cerca di risolvere l'immagine introdotta dal marcatore  <IMG>. Per far questo esegue una GET all'indirizzo specificato dall'attributo SRC="URL" dello stesso marcatore, e riceve dal server il risultato della computazione del gateway nph-count: l'immagine del contatore.

Per forzare una chiamata GET all'indirizzo del gateway, scriviamo sulla linea "location" del nostro browser web la stringa:

http://www.inf.uniroma3.it/cgi-bin/nph-count?width=5&link=pippo

nella finestra del client comparirà il contatore, come si vede in figura (il numero è 00001 se nessuno ha usato mai prima la parola chiave "pippo").

Per il secondo esperimento è necessario portarci nella directory ~www/httpd/cgi-bin, che, nel nostro sistema, ospita i gateway program. Assegnamo il valore "GET" alla variabile d'ambiente REQUEST_METHOD, ed il valore "width=5&link=pippo" alla variabile QUERY_STRING. Poi lanciamo il programma:
 

<patrigna@pascal ~>cd ~www/httpd/cgi-bin
<patrigna@pascal ~www/httpd/cgi-bin>setenv REQUESTO_METHOD GET
<patrigna@pascal ~www/httpd/cgi-bin>setenv QUERY_STRING "width=5&link=pippo"
<patrigna@pascal ~www/httpd/cgi-bin>nph-count
HTTP/1.0 200 OK
Content-type: image/gif

GIF87aKç]]]eeehhhsssXXXKKK:::&&&ff   !!!"""777bbb###PPP$$$???„„„’’’www333%%%xxxÿ
ÃÃÃòò888FFF'''***ÊÊʔ””äääãããJJJ,,,¢¢¢^^^999@@@ÈÈÈ©©©ââ⊊ŠñññÄÄĵµµ
 
 
 
 

ððð‰‰‰±±±ÁÁÁßß߀€€¿¿¿666```ïïï000555ppp444222BBBAAA>>>===<<<(((¼¼¼+++{{{•••þþ
þ†††õõõ÷÷÷|||ææærrrÛÛÛnnnÚÚÚmmmRRR£££½½½aaattt­­­ÆÆÆOOOÅÅÅ111üüüíííûûûkkk®
®®ôôô¸¸¸HHH___ÎÎÎêêêyyyéééëëëvvvœœœVVVSSSÜÜÜÝÝ݈ˆˆ03m5oa
vp      i       pl5a
08an5p2pfpDI1rbr        nip             u
vig1pfgpt3,þ0€@$P `ƒ    D¨¡Cˆ
                              L¸°áÈ)vr"G‹<€A‚K bJX@¡‚J–/aʤise˗1'̬yó§Ë C{⺳¦
.H:U†
:xøpà@„«kÛ¾;·îݺf€0Aƒ†
yÝ•K×.^¶n‹á÷°ÞÄ @4ArˆÅ‹Gd¸€€‰
                              •\Ƭ™³gЖ1‹(Ýùsh^ª|YìÅ´kÉ&R¨¡bLÛ%Lœ(±…n+°hA"øðâǓ/
o.ϋȴ3w&
<patrigna@pascal ~www/httpd/cgi-bin>

Come si vede, il programma manda il suo output direttamente sul video. L'output comincia con due righe testuali, destinate all'header del messaggio http, poi presenta una riga vuota, e quindi il codice binario rappresentante il contatore. Per verificare il contenuto del file binario occorrerà salvare l'output su un file (tramite la redirezione dello standard output). Il file è così visibile con un editor come nedit, ma non è editabile, in quanto contiene codici binari. Neanche con un visualizzatore di immagini gif è visibile, in quanto contiene le prime tre righe di caratteri testuali. Per risolvere il problema eliminiamo le prime tre righe con il comando tail, e poi visualizziamo il file con il programma xv. La successione dei comandi è la seguente:
 

<patrigna@pascal ~www/httpd/cgi-bin>nph-count > ~/pippo.gif
<patrigna@pascal ~www/httpd/cgi-bin>nedit ~/pippo.gif & 
errore: contiene cifre binarie
<patrigna@pascal ~www/httpd/cgi-bin>xv ~/pippo.gif & 
errore: contiene caratteri testuali
<patrigna@pascal ~www/httpd/cgi-bin>tail +4 ~/pippo.gif > ~/pippo2.gif
<patrigna@pascal ~www/httpd/cgi-bin>xv ~/pippo.gif &  f
finalmente si vede il contatore!!
 
 

pagina precedente    prossima pagina