PHP: Professional Hypertext Preprocessor Corso di Base Lezione 4 Dal Form al PHP Docente Prof. Antonio Curci 1
Capitolo 4 Dal Form al PHP Una prima forma di interattività sul web è costituita dall uso dei Form. L esempio che segue, ci introdurrà ad una gamma di concetti importanti, incluso il modo in cui PHP tratta le variabili che provengono dall'esterno dello script corrente. In primo luogo, diamo una rapida occhiata a un form HTML e poi entriamo un po' nei dettagli per capire come i dati vengono trasmessi dal form al server. Consideriamo il seguente esempio: <body> <form action="page.php" method="post"> <input type="text" name="name" value=""> <input type="submit" name="submit" value="submit"> </form> Questo form contiene un campo di testo chiamato nome e un pulsante di conferma. Si noti il metodo utilizzato nel tag d'inizio. Esistono due opzioni per il metodo: GET e POST, che determinano come le informazioni vengono trasmesse dal form al server. Senza cadere nel tecnico, questa è la differenza: GET trasmette le informazioni del form collegandole all'url, che è lo stesso modo in cui le informazioni vengono trasmesse da un link. POST, invece, trasmette le informazioni in modo trasparente come parte dell'intestazione della pagina richiesta, per ragioni di sicurezza si preferisce usare questa modalità di trasmissione dei dati introdotti. E' per questo che POST è solitamente scelto come metodo per i form, a meno che state facendo il debug del vostro script e dovete vedere cosa viene trasmesso. Una volta che il server riceve le informazioni di un form subentra la fase di programmazione. Ogni valore passato dal form è automaticamente disponibile allo script PHP indicato nel campo ACTION usando il nome dato all'input nel form. Per esempio, nel caso dell'esempio sopra citato, se si inserisce nel campo di testo il nome "Fabio", il nome di quel valore nello script sarà accessibile come $nome. 2
Esercizio di Fine Modulo File panetti.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="pspad editor, www.pspad.com"> <title></title> </head> <body bgcolor="#fffff1" vlink="#00ff00" alink="#0000ff" link="#cccccc"> <Font Face = "arial" size=5 color = red> <?php define (SCUOLA, "ITI 'M.Panetti'"); define (VIA, "Via Re David,186"); define (CITTA, " - BARI - "); print ""; echo SCUOLA; print ""; echo VIA; print ""; echo CITTA; print ""; print "</CENTER>";?> <font face = "arial" size=4 color = blue> <a href = iscrizioni.php>iscrizioni on-line</a> > 3
File iscrizioni.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="pspad editor, www.pspad.com"> <title></title> </head> <body bgcolor="#fffff1" vlink="#00ff00" alink="#0000ff" link="#cccccc"> <Font Face = "arial" size=5 color = red> Domanda di Iscrizione <Font Face = "arial" size=4 color = blue> Al Dirigente Scolastico dell'iti "Panetti"-Bari <Font Face = "arial" size=3 color = "#333333"> <form name = "iscrizione" method = post action = "controlladati.php"> Il Sottoscritto <INPUT TYPE=text NAME=genitore> in qualita' di <INPUT TYPE= radio name=ruolo value=padre> padre <INPUT TYPE= radio name=ruolo value=madre> madre <INPUT TYPE= radio name=ruolo value=tutore> tutore dell'alunno <INPUT TYPE=text NAME=alunno> CHIEDE l'iscrizione dello stesso alla sezione/classe <INPUT TYPE=text NAME=classe> di codesta scuola per l'a.s. 2005/2006 A tal fine dichiara, in base alle norme sullo snellimento dell attività ammnistrativa e consapevole delle responsabilità cui va incontro in caso di dichiarazione non corrispondente al vero, che 4
l'alunno <INPUT TYPE=text NAME=alunno> C.F. <INPUT TYPE=text NAME=cf> e' nato a <INPUT TYPE=text NAME=luogonascita> il <INPUT TYPE=text NAME=datanascita> e' cittadino <INPUT TYPE= radio name=cittadinanza value=italiana> italiano <INPUT TYPE= radio name=cittadinanza value=altra> altro <INPUT TYPE=text NAME=altrostato> e' residente a <INPUT TYPE=text NAME=residenza> Prov. <INPUT TYPE=text NAME=provincia> in via <INPUT TYPE=text NAME=via> Telefono <INPUT TYPE=text NAME=tel> Proviene dalla scuola <INPUT TYPE=text NAME=scuolaprovenienza> Bari,li' <INPUT TYPE=text NAME=data> <INPUT TYPE=submit Value=invia> </form> 5
File controlladati.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="pspad editor, www.pspad.com"> <title></title> </head> <body bgcolor="#fffff1" vlink="#00ff00" alink="#0000ff" link="#cccccc"> <Font Face = "arial" size=3 color = "#0000ff"> I Dati inseriti sono <?php echo "Il Sottoscritto <B>", $genitore, "</B> in qualita' di <B>", $ruolo, "</B>"; echo ""; echo ""; echo "dell'alunno <b>", $alunno,"</b>"; echo ""; echo ""; echo ""; echo "CHIEDE"; echo ""; echo ""; echo ""; echo "l'iscrizione dello stesso alla sezione/classe "; echo "<b>",$classe, "</b> di codesta scuola per l'a.s. 2005/2006"; echo ""; echo ""; echo "A tal fine dichiara, in base alle norme sullo snellimento dell attività ammnistrativa e consapevole delle responsabilità cui va incontro in caso di dichiarazione non corrispondente al vero, che"; echo ""; echo ""; echo "l'alunno <b>", $alunno, "</b> C.F. <B>",$cf,"</b>"; echo ""; echo ""; echo " e' nato a <B>", $luogonascita, "</b> il <b>", $datanascita,"</b>"; echo ""; echo ""; echo "e' in possesso di cittadinanza "; echo "<b>",$cittadinanza,"</b>"; echo "<b>",$altrostato,"</b>"; echo ""; echo ""; echo "e' residente a <b>", $residenza, "</b>"; echo " Prov. <b>", $provincia, "</b>"; 6
echo " in via <b>", $via, "</b>"; echo ""; echo ""; echo "Telefono <b>", $tel, "</b>"; echo ""; echo ""; echo "Proviene dalla scuola <b>", $scuolaprovenienza, "</b>"; echo ""; echo ""; echo "Bari,li' <b>", $data, "</b>"; echo ""; echo "";?> <form name = "registra" method = post action = "registra.php"> <INPUT TYPE=submit Value=registra> </form> 7