Corso di CGI

Introduzione ai form

 

Come usare i form per scambiare dati

L’utilizzo più comune per uno script CGI è quello di ricevere dati da un form, e provvedere alle azioni necessarie. Ma come funziona questo scambio di dati? Vediamo il sorgente HTML di un form molto semplice:

<html><body>
<form action="http://localhost/cgi-bin/script.pl" method="GET">
Nome:    <input type="text" name="nome"><BR>
Cognome: <input type="text" name="cognome"><BR>
<input type="submit">
</form>
</body></html>



(se non sapete interpretare le linee precedenti, beh... questo è il sito adatto per cercare un corso di HTML :-). Il tag più importante è <form>, che contiene due parametri:

action="URL"
method="METHOD"

URL è l'indirizzo dello script che riceverà i dati. Può essere un URL assoluto, come in questo caso, oppure relativo.
METHOD è il metodo, appunto, con cui verranno inviati i dati. I due metodi che useremo sono "GET" e "POST". Vedremo in seguito le differenze tra i due.
Dopo il tag <form>, ci interessano i due tag <input>, ed in particolare il parametro "name": questo è il nome con cui potremo ritrovare ciò che l’utente ha scritto nei campi di input.

Avete ancora lo script della lezione precedente, vero? Bene. Modificate il parametro <action> in modo che punti al nostro script, e salvate il file come "prova.html" o un nome qualunque. Adesso fate partire IE, oppure Netscape, ed aprite il nostro file html. Vedrete un piccolo form dove inserire il vostro nome e cognome. Una volta inseriti, premete "Submit" e vedrete riapparire la stessa serie di linee incomprensibili dell’altra volta. Ma...
...ma adesso cercate la variabile QUERY_STRING. Dovrà essere qualcosa di simile:

QUERY_STRING: nome=alfio&cognome=puglisi
REQUEST_METHOD: GET

Se non vedete il vostro nome e cognome (o qualunque cosa abbiate scritto nel form), fermatevi, tornate indietro, riprovate e controllate di aver scritto tutto giusto. Per poter dire che tutto sta funzionando, DOVETE vederli.

Cosa scriveremo nel nostro script per accedere a questi dati? Esperti di Perl come siete, vi basterebbe una piccola regexp per estrarre tutto e il contrario di tutto... e in effetti è quello che facevo io fino ad un po’ di tempo fa. Ma è molto meglio usare il modulo CGI, che è compreso in tutte le distribuzioni Perl:

#!/usr/local/bin/perl
use CGI;
$query = new CGI;
print "Content-type: text/html\n\n";
print "<html><body>\n";

$nome = $query->param('nome');
$cognome = $query->param('cognome');
print "Nome: $nome <BR> Cognome: $cognome\n";
print "</body></html>\n";

vediamo in dettaglio le nuove istruzioni di questo script:

use CGI;

informa il Perl che useremo il modulo CGI, e si occupa di caricare le librerie apposite

$query = new CGI;

crea un nuovo oggetto CGI, a cui ci riferiamo tramite la variabile $query. Al momento della creazione, l’oggetto CGI va a vedere la QUERY_STRING e si occupa di interpretarla al meglio.

$nome = $query->param('nome');

Qui le cose si fanno interessanti: l’oggetto CGI ($query) ha già in memoria la lista dei parametri passati. Per trovare il loro valore, non dobbiamo fare altro che chiederli con il metodo param(), che accetta in ingresso il nome del parametro richiesto.

$cognome = $query->param('cognome');

Come sopra, chiediamo il valore del parametro "cognome".

Beh, è piuttosto facile, no? L’oggetto CGI ha altre 1001 funzioni che possono tornare utili, ma vi assicuro che nel 90% dei casi ci limiteremo a crearlo e a fare tanti param() per prendere la lista degli argomenti. Se siete interessati al resto, potete studiarvi la documentazione in linea che è molto corposa. Ovviamente, quando incontreremo dei casi particolari ve li spiegherò in dettaglio.
Ah già, vi avevo promesso di spiegarvi la differenza tra GET e POST. Ma voglio un discorso fatto per bene, e perciò mi ci vorrà tutta la prossima lezione.

 

Torna all'indice Generale del corso di Corso di CGI di Software Planet