Le variabili di ambiente sono delle etichette a cui vengono associati dei valori (esclusivamente stringhe di caratteri). Esse sono presenti in molti sistemi operativi (DOS, UNIX, ...), anche se l'utente non ne è necessariamente a conoscenza. Si può verificare l'esistenza delle variabili d'ambiente ed il loro valore eseguendo il comando "set" (su DOS) o "setenv" (su sistemi UNIX). Gli stessi comandi permettono generalmente di creare nuove variabili d'ambiente, assegnando ad una nuova etichetta un valore stringa (per esempio: "set PRESENTATORE=Pippo Baudo" su sistemi DOS, oppure "setenv PRESENTATORE 'Pippo Baudo'" su sitemi UNIX).  Anche i programmi possono consultare le variabili d'ambiente, anzi è proprio per questo scopo che esse esistono: esse definiscono il valore di alcuni parametri che sono in genere necessari ai programmi durante la loro esecuzione. Non è comodo passare questi parametri ogni volta al programma sulla linea di comando, è più pratico che il programma se li estragga da sé dalle variabili d'ambiente. Alcuni programmi non consultano nessuna variabile d'ambiente, altri ne consultano qualcuna piuttosto comune, altri ancora hanno bisogno per poter funzionare di Per esempio: la variabile di ambiente PATH (presente sia sotto DOS che sotto UNIX) comunica all'interprete dei comandi in quali directory (ed in che ordine) si debbano cercare i comandi ed i file eseguibi lanciati dall'utente. Sarebbe scomodo dover specificare questi dati di input ogni volta, e d'altronde il sistema sarebbe poco elastico se non ne prevedesse una modifica ed una personalizzazione.

Il passaggio di parametri tramite variabili di ambiente avviene ogniqualvolta il server riceva dal client una chiamata GET con i parametri posti in coda al nome del programma e in coppie nome=valore (primo riquadro della figura). In questo caso la trasmissione dei parametri al gateway program avviene tramite l'assegnazione ad una opportuna variabile d'ambiente con il valore corrispondente all'intera stringa delle coppie nome=valore (secondo riquadro della figura). La variabile d'ambiente che il CGI usa per questo scopo è QUERY_STRING. Successivamente il server lancia il gateway program (terzo riquadro della figura), che estrae i valori desiderati dalla stessa variabile di ambiente. Se il gateway program è scritto in linguaggio C, nel suo codice compariranno delle istruzioni analoghe a quelle rappresentate nel quarto riquadro della figura: ci sarà una variabile allo scopo di ospitare la stringa dei parametri da recuperare (la variabile "parametri" appunto). A questa variabile verrà assegnato uno spazio opportuno di memoria per ospitare tutta la stringa di parametri (è lo scopo della seconda linea del programma: la funzione parametri = (char*)calloc(256, sizeof(char)) riserva 256 caselle contigue di memoria, ognuna della dimensione sufficiente a contenere un carattere, ed assegna alla variabile parametri il puntatore alla prima casella). Infine la funzione di libreria strcpy() copia nella zona di memoria puntata da parametri, il risultato della funzione getenv("QUERY_STRING"), ovvero il valore della variabile di ambiente che contiene i parametri cercati. Nel seguito del programma sarà necessario individuare all'interno di questa stringa le coppie nome=valore, ed estrarre i valori opportuni.


pagina precedente    prossima pagina