WallPapers

Amazon Books

Driver Image Banner 728 x 90

Usare Get e Post

I form (moduli) iniziano con il tag <FORM> che richiede la chiusura </FORM>; è un elemento di BLOCCO e può contenere qualsiasi altro elemento ma non altri form; i suoi attributi sono:

 

 

 

ACTION, per specificare l' URL a cui inviare i dati del form;

METHOD, per specificare l'azione da svolgere sui dati, i valori possibili sono "GET" o "POST"; ENCTYPE, per indicare il tipo di MIME usato per il trasferimento delle informazioni.

TARGET, per definire una nuova finestra dove visualizzare la risposta elaborata dallo script definito in ACTION .

Esistono poi i cosiddetti attributi di evento come ONMOUSEOVER, ONCLICK, ONSUBMIT, ONRESET che usualmente vengono gestiti per mezzo di linguaggi di scripting lato client (per esempio Javascript).

Gli attributi più importanti sono ACTION e METHOD. Il valore di ACTION corrisponde all'indirizzo a cui inviare i dati; può essere o un indirizzo di posta elettronica o il nome dello script (completo di percorso) che dovrà ricevere ed elaborare in qualche modo i dati del form.

Il valore di METHOD può essere "GET" oppure "POST"; nel primo caso i dati vengono accodati all'URL indicato in ACTION, nel secondo caso i dati vengono passati in modo autonomo attraverso lo standard input al server.

Riguardo all'attributo ENCTYPE è opportuno soffermarsi brevemente sui tipi MIME (Multipurpose Internet Mail Extension) creati originariamente per descrivere gli allegati di posta elettronica e ora usati, più generalmente, per riconoscere la natura dei file presenti sul WEB. Sono composti da due parti, tipo principale / tipo specifico come ad esempio: "image/gif" (immagini di tipo gif), "text/plain" (testo puro) e molti altri.

Il tipo di MIME da usare per trasferire i dati dal form al server HTTP è: "application/x-www-form-urlencoded" e deve essere specificato solo nel caso si usi il METHOD "POST"; questo valore è comunque quello di default dell'attributo ENCTYPE.

In pratica serve a comunicare al server che i dati saranno inviati attraverso lo standard input (il metodo è "POST") ma codificati alla stessa maniera che con il metodo "GET".

 

Vediamo ora un esempio di form che invia i dati con il metodo GET

Lo script si chiama prova_form.php, nel modulo sono inseriti due campi con NAME "cognome" e "nome",

i valori dei due campi inseriti dall'utente sono "Paperino" e "Paolino" rispettivamente.

<FORM ACTION="provaform.php" METHOD="GET">

...

...

</FORM>

 

In caso di invio con metodo "GET" i dati, nella forma "nome=valore", vengono accodati all' URL indicato in ACTION separandoli da esso con il carattere "?"; inoltre ogni coppia nome-valore è separata dalla successiva con il carattere "&". Quindi l' URL effettivo diventa:

"prova_form.php?cognome=Paperino&nome=Paolino"

Ecco un esempio di una form gestita con il PHP e metodo post

 

<HTML>

<HEAD><TITLE>Esempio 1 con php</TITLE></HEAD>

<BODY>

<H3>Modulo gestito con PHP</H3>

<P><BR><P>

Sei collegato al server WEB:

<B><?php echo $SERVER_NAME; ?></B>

&nbsp;all'indirizzo:

<B><?php echo $SERVER_ADDR; ?> </B>

<P>Server powered by:

<B><?php echo $SERVER_SOFTWARE; ?></B>

<P>Sei collegato dall'indirizzo:

<B><?php echo $REMOTE_ADDR; ?></B>

<P><BR><P>

Inserisci i tuoi dati anagrafici

<P><FORM ACTION="./php1r.php" METHOD="POST">

<P>Cognome: <INPUT TYPE="TEXT" NAME="cognome" SIZE="20" MAXLENGTH="20">

<P>Nome: <INPUT TYPE="TEXT" NAME="nome" SIZE="20" MAXLENGTH="20">

<P>Eta':

<P><INPUT TYPE="RADIO" NAME="eta" VALUE="1-18">1-18

<P><INPUT TYPE="RADIO" NAME="eta" VALUE="19-40">19-40

<P><INPUT TYPE="RADIO" NAME="eta" VALUE="41-65">41-65

<P><INPUT TYPE="RADIO" NAME="eta" VALUE="66-99">66-99

<P>E-mail: <INPUT TYPE="TEXT" NAME="email" SIZE="30" MAXLENGTH="30">

<P><INPUT TYPE="RESET" VALUE="Reset">

<INPUT TYPE="SUBMIT">

</FORM></BODY>

</HTML>

 

La pagina visualizzata dal codice ora visto è questa:

 

modulo gestito con php

 

 

In questo caso i dati vengono passati attraverso il canale di input standard mentre la variabile QUERY_STRING rimane vuota; lo script legge lo standard input dove trova la stringa: "cognome=Paperino&nome=Paolino....." etct.

 

Il metodo "POST" è quello da usare obbligatoriamente nel caso i dati debbano essere trasferiti ad un indirizzo di posta elettronica; negli altri casi si possono usare indifferentemente i due metodi.

 

Occorre però osservare che il metodo "GET" è il meno sicuro in presenza di una grossa mole di dati da trasferire in quanto essi vengono accodati all' URL e, siccome gli URL hanno lunghezza limitata, si rischia di perdere una parte dei dati inviati dal modulo allo script