Corso PHP/ Lezione 4: Gestire i form HTML

In questa lezione vedremo come utilizzare le form HTML per inviare informazioni (e passare parametri) ad uno script PHP


Una form (modulo) HTML è costituita da un certo numero di elementi quali
caselle di testo, menù a discesa, caselle di spunta e così via. Tali elementi
consentono al visitatore della pagina di inserire delle informazioni esattamente
come nel caso della compilazione di un questionario cartaceo.

Un buon manuale HTML può aiutare molto per la comprensione di questa lezione
e degli esempi che verranno proposti; è necessario, infatti, un minimo di
dimestichezza con i tag utilizzati per la creazione di form.

Come funziona una form? Una volta inseriti i dati richiesti questi vengono
inviati, tipicamente con la pressione di un apposito tasto ( submit ), ad
uno script o ad un’applicazione CGI che li elabora. La URL dell’applicazione
viene specificata con l’attributo action del tag form .

Un esempio di form HTML:

<!-- file form.html -->

...

<form action="/scripts/elabora.php" method="get">

<input type="text" name="campione">

<input type="submit" name="bInvia" value="Invia i
dati">

</form>

L’attributo method , invece, specifica il metodo da utilizzare per
l’invio delle informazioni e può essere GET o POST. Con il metodo GET le
informazioni vengono incluse nell’indirizzo URL; sono pertanto visibili nella
barra degli indirizzi del browser ma, soprattutto, sono vincolate dalla
lunghezza massima di una URL (256 caratteri).

Con il metodo POST, invece, i dati della form vengono scritti sullo
"standard input" dell’applicazione destinataria e non sono visibili
nella barra degli indirizzi del browser; inoltre, non ci sono limiti sulla
quantità di dati inviata.

Dal punto di vista del programmatore PHP i due metodi sono di fatto
equivalenti: l’interprete PHP, infatti, analizza sia le informazioni passate
tramite la URL (metodo GET) che quelle ricevute sullo standard input (metodo
POST) e le rende immediatamente disponibili nello script di destinazione sotto
forma di variabili globali.

In alternativa, si può accedere alle informazioni inviate con i metodi GET e
POST utilizzando gli array associativi $HTTP_GET_VARS e $HTTP_POST_VARS ,
rispettivamente. Ad esempio, se tramite il metodo GET inviamo ad uno script PHP
un parametro di nome "pagina" e di valore pari a 1, all’interno dello
script stesso potremo accedere a tale informazione sia usando la variabile
globale $p , sia accedendo a $HTTP_GET_VARS["p"] , cioè
all’elemento dell’array associativo $HTTP_GET_VARS individuato dalla
chiave "p".




Riprendiamo la form dell’esempio precedente e supponiamo di scrivere nella
casella di testo la parola "Schumacher" e di premere il pulsante
"Invia i dati". Il browser si sposterà all’indirizzo

http://www.miosito.tld/scripts/elabora.php?campione=Schumacher

Cosa è successo? Poiché la form dell’esempio usa il metodo GET per
trasferire i propri dati, questi vengono codificati nell’indirizzo dello script
a cui devono essere inviati. Nello script ‘elabora.php’ adesso troveremo
definita una variabile globale di nome $campione il cui valore è la
stringa "Schumacher".

// Nel file `elabora.php' ...

// Questo stampa "Schumacher"

echo $campione;

A questo punto è utile accennare al modo in cui le informazioni provenienti
da una form HTML vengono codificate per essere trasmesse con il metodo GET.
Partiamo dall’indirizzo URL dello script a cui vogliamo inviare tali dati; ad
esso aggiungiamo (a destra) un punto interrogativo che separerà la URL vera e
propria (a sinistra) dalla `query string’ che andiamo a costruire.

La struttura della query string consiste di una serie di coppie nome/valore
separate da una "e" commerciale (&); i caratteri non ammissibili
in un indirizzo URL (ad esempio gli spazi) vengono sostituiti dal simbolo di
percentuale seguito dal corrispondente codice ASCII (in esadecimale).

Adesso che sappiamo come funziona il metodo GET possiamo sfruttarlo per
passare parametri ad uno scrip PHP. Supponiamo di avere uno script di nome
`news.php’ che estrae notizie ed articoli da un database; ad esso vogliamo
passare un parametro, chiamiamolo $argomento , che determinerà il tipo di
notizie che ci verranno mostrate. Ad esempio, per ottenere notizie sportive,
invocheremo:

http://www.miosito.tld/news.php?argomento=Sport

In questo caso la codifica manuale della URL era semplice, ma cosa fare se ci
interessano le notizie di `Attualità e Cultura’? Niente paura, esiste una
funzione PHP, urlencode() , che ci permette di codificare una stringa in
una forma ammissibile per una URL. Il frammento di script per creare il link
appropriato sarà:

<?

echo '<a href="http://www.miosito.tld/news.php?argomento=';

echo urlencode("Attualità e Cultura");

echo '">Clicca qui</a>';

?>

E il risultato… scopritelo da voi.

Luca Balzerani , studente di
Informatica, è fondatore e presidente di LatoServer.it ,
sito dedicato alla programmazione server-side ed al backend in generale.

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

Chiudi i commenti