I forms e l'interfaccia CGI

L'interfaccia Common Gateway Interface (CGI) e' uno strumento essenziale per creare programmi che gestiscono applicativi interattivi e guidati dall'utente.

Il CGI e' parte del server Web e puo' comunicare con altri programmi che girano sul server. Col CGI il server puo invocare un programma esterno, passendogli dati:

Il CGI permette la creazione dinamica di pagine basate sull'input degli utenti, come pagine di cataloghi personalizzate, rapporti di database, ecc.

Il meccanismo e' come segue:

  1. dal lato browser, l'utente riempie un modulo (form) e poi lo sottomette al browser con uno di due metodi, detti GET e POST
  2. il server riceve la richiesta dall'utente e invoca un programma esterno appropriato
  3. il programma legge l'input utente ed esegue la richiesta dell'utente
  4. il programma genera in output una pagina HTML standard, compresa la testata
  5. il server invia questa pagina HTML al browser del client

Il programma che viene invocato dal server per gestire la richiesta del client e' scritto con qualsiasi linguaggio. In particolare al giorno d'oggi il linguaggio Perl sta riscuotendo notevole successo come linguaggio di scrittura di programmi CGI.

Se la richiesta e' stata emessa col metodo 'GET', allora il programma si trova l'input utente formattato secondo specifiche regole nello URL che l'ha invocato. Se la richiesta era inviata col metodo 'POST' (il piu' comune), allora l'input utente e' semplicemente sullo stsndard input.

E' compito del programma CGI mandare a standard output un documento del tipo:

Content-type: text/html

<html>
<head>
<title> ......
...
<head>
<body>
.........
<body>
<html>

La prima linea deve essere sempre la parola chiave Content-type: seguita dal tipo MIME del documento, nel caso di una pagina HTML questo e' text/html.

Questa linea e' tutto quello che e' necessario della testata HTML e segue una linea vuota poi il corpo del messaggio - la vera e propria pagina Web.

La generazione di un applicativo basato su CGI consiste di due parti:

Un esempio di applicativo CGI e' quello della firma del libro visite (guestbook). La parte di 'form' puo' acere il seguente codice HTML:

<html>
<head>
<title>Guestbook<title>
<head>
<body bgcolor=#ffffff>
<h1>Firmate il Libro Visite!<h1>
<p>
<form method="GET" action="/cgi-bin/guestbook.pl">
<pre>
Nome:           <input type="text" name="firstname">
Cognome:        <input type="text" name="lastname">

<input type="submit">     <input type="reset">
<pre>
<form>
<body>
<html>

Per interagire con tale form, cliccare qui.

Viene visualizzata una pagina del tipo:

Sono da notare nel codice i seguenti punti:

Il metodo GET invia al server una richiesta di protocollo HTML che nel nostro esempio puo' essere del tipo:

GET /cgi-bin/guestbook.pl?firstname=Paolo&lastname=Rossi HTTP/1.0

Il metodo POST invece invia una richiesta del tipo:

POST cgi-bin/guestbook.pl HTTP/1.0
...... altri campi di testata ....

firstname=Paolo&lastname=Rossi

Un programma in Perl che gestisse tale modulo, nel nostro caso guestbook.pl, dapprima interpreterebbe i campi in input, poi aggiornerebbe una tabella dei visitatori, quindi invierebbe un messaggio di ringraziamento del tipo:

......
print "Content-type: text/html", "\n\n";
print "<html><head><title>Grazie</title></head>
print "<body><h3>Grazie per aver riempito il mio Libro Visite</h3>
print "</body></html>
......

che produrrebbe una pagina di risposta del tipo:


©1998 A.P.Software Informatica