![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Coordinamento di Luciano Giustini![]() Note L'articolo è disponibile anche in lingua inglese |
di Michele Beltrame
Informazioni generaliIn questo articolo voglio descrivere sommariamente la programmazione CGI (acronimo di Common Gateway Interface). Quando vedete su un sito Web cose come contatori di accessi, imagemap o pagine dinamiche, potete essere certi che esse sono state create utilizzando la tecnologia CGI. Chiariamo subito che CGI non è un linguaggio di programmazione, bensì un'interfaccia con cui il client Web (il browser) puo` interagire con i programmi presenti sul server Web. I programmi CGI possono infatti essere scritti con il linguaggio di programmazione che si preferisce o piu` si conosce: C, C++, Pascal, SmallTalk, Python, Basic, .... Il linguaggio piu` usato per questi programmi è tuttavia il Perl, nato in ambiente Unix alcuni anni fa e per cui dobbiamo ringraziare soprattutto Larry Wall, il suo ideatore. I vantaggi derivanti dall'uso del Perl sono molteplici in quanto esso è facile da imparare, è dotato di potentissime funzioni ed operatori per la manipolazione delle stringhe, è molto portabile e ricco di estensioni. Il vostro server (o quello del vostro provider) dovrà tuttavia disporre di un interprete Perl, in quanto si tratta di un linguaggio interpretato (ad onor del vero ne esiste anche un compilatore, scritto da Malcom Beattie, ma è ancora in fase di alpha testing). Gli esempi che inseriro` in questi articoli sono tutti in Perl. In ogni caso, come detto prima, potete utilizzare il linguaggio di programmazione che desiderate. Potete trovare l'interprete Perl per vari sistemi operativi (oltre che per Unix, anche per Windows NT e molti altri) presso il sito www.perl.com di Tom Christiansen e anche su molti altri siti internet. In questo articolo mi riferirò ai programmi in tecnologia CGI chiamandoli semplicemente CGI o programmi CGI. Non è proprio corretto, ma lo fanno tutti ed almeno è breve. ;-) Ma cosa si fa con i CGI ?Le applicazioni della programmazione CGI sono molte e sono quasi tutte volte a permettere una maggior interazione tra l'utente il server, cosa che non accade per le normali pagine HTML (eccezion fatta per i soli link). Ve ne sono tuttavia tre principali, dalle quali poi derivano molte delle altre.Pagine dinamiche - Le pagine dinamiche, pittorescamente chiamate da alcuni pagine virtuali, sono pagine HTML che vengono create on the fly, cioé al volo, sul momento, come risposta ad una specifica richiesta del client oppure sulla base di dati che subiscono frequenti variazioni. Un esempio di pagina dinamica puo` essere il seguente:
Michele Beltrame home page La pagina è chiaramente generata dinamicamente, in quanto vengono visualizzati dei dati non noti a priori al creatore del programma CGI (in questo caso il numero di accessi che la pagina ha avuto ed il nome del client). Form - Gateway - Vi sono informazioni, come ad esempio il contenuto di un database o comunque file in formato diverso da quelli interpretabili dal client, che non possono essere direttamente accedute. Per superare questo problema è necessario ricorrere ai gateway, dei programmi che leggono un certo file e ne interpretano i contenuti, traducendoli in una forma leggibile dal client. Come funziona l'interfaccia CGIPer quelli di voi che sono interessati non solo a sapere come si usano i programmi CGI, ma anche a capire come funzionano ( e mi auguro siate molti ;-) ) scrivo qualche riga su come un CGI viene invocato dal client e su come esso ritorna al client il suo output. Un CGI viene invocato come qualsiasi altro documento HTML (viene cioé "richiesto"): il client invia al server qualcosa di questo genere: GET /cgi-bin/booksearch.pl HTTP/1.0 Nella prima linea sono riportati il nome del file richiesto (booksearch.pl nella directory /cgi-bin) ed il protocollo usato (HTTP 1.0). Nelle linee successive sono riportati i formati che il client accetta in risposta alla richiesta (in questo caso file di testo, file html, immagini gif ed immagini jpeg). Nell'ultima linea è infine riportato il nome del client (Netscape 3.0/Linux in questo caso). è possibile che nella richiesta siano presenti altre linee che ad esempio identificano l'utente, ma per capire il funzionamento dei CGI solo la prima linea è rilevante. Se il server riceve una richiesta per un documento che si trova in una determinata directory (/cgi-bin in questo caso) o che ha una determinata estensione (potrebbe essere .cgi per i file che si trovano all'esterno della directory /cgi-bin), esso non manda il documento al client, ma lo esegue come si trattase di un file eseguibile (ed in effetti si tratta di un file eseguibile), inviandone l'output al client anziché al device standard (che ad esempio potrebbe essere il monitor). Tale output, affinché giunga correttamente al client, deve essere così strutturato : HTTP/1.0 200 OK
Date: Sunday, 22-September-96 11:09:00 GMT Come vedete, dovrete restituire un documento con un header completo contente data, ora, nome del server, versione del protocollo MIME, tipo di contenuto e lunghezza del contenuto. In realtà nella maggior parte dei casi è sufficiente restituire un header parziale che specifica solo il tipo di contenuto : Content-type: text/html Sarà il server a completare l'header con le informazioni mancanti. Questo semplifica notevolmente la creazione di pagine HTML dinamiche; ci sono tuttavia alcune circostanze, che vedremo in un futuro articolo, in cui è necessario usare gli header completi.
Configurazione del serverÈ necessario apportare alcune semplici modifiche alla configurazione del server affinchè l'interfaccia CGI funzioni correttamente. Molti di voi non avranno bisogno di smanettare nei file di configurazione, dal momento che il vostro provider avrà già sistemato tutto. In ogni caso mi sembra opportuno spendere due parole sull'argomento. Gli esempi di configurazione che ho inserito riguardano il server http Apache (ottenibile liberamente presso http://www.apache.org), ma funzionano anche con NCSA httpd. Per gli altri server non posso garantire. ;-) Vi sono tre file di configurazione (che nella maggior parte dei casi si trovano in /usr/local/etc/apache/conf) : httpd.conf, access.conf e srm.conf. In httpd.conf sarà necessario includere le seguenti direttive (o modificarle se già presenti ed impostate in altro modo):
Passiamo a srm.conf :
Per ultimo analizziamo httpd.conf :
Le variabili d'ambienteOk, configurato tutto... siamo pronti per cominciare con qualche semplice applicazione CGI. L'interfaccia CGI mette a disposizione dei programmi tutta una serie di variabili d'ambiente che forniscono le informazioni piu` disparate. Eccone una tabella riassuntiva, non preoccupatevi se di alcune non capite la funzione :
Non tutti i server e non tutti i client impostano tutte queste variabili. Alcune potrebbero quindi non funzionare sempre. Vediamo ora un semplice programma Perl che usi qualcuna delle variabili descritte nella precedente tabella : #!/usr/bin/perl È possibile chiamare questo programma da un qualsiasi documento HTML aggiungendoci un link. Ad esempio, poniamo che il CGI in questione si chiami infoclient.pl e si trovi nella directory /cgi-bin. La linea da aggiungere sarà la seguente: <A HREF="/cgi-bin/infoclient.pl">Informazioni sul client</A> Quando verrà invocato, il programma creerà una nuova pagina HTML (dinamica) che risulterà più o meno così : Ciao! Dalle variabili d'ambiente vengono quindi estratti il nome dell'host su cui risiede il client ed il nome del browser. Tali dati vengono poi visualizzati all'utente. Questo è un esempio molto semplice, ma illustra chiaramente le potenzialità della tecnologia CGI. Conclusione...Mi auguro di essere riuscito nel mio intento di introdurre la programmazione CGI. Nel prossimo numero tratterò le form, quindi non azzardatevi a mancare. Ciao!
Bibliografia : |
Michele Beltrame è Webmaster del sito ItalPro ed è raggiungibile su Internet tramite la redazione
Copyright © 1996 BETA. Tutti i diritti riservati.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |