Interazione con l utente : i moduli. Nelle lezioni fin qui riportate, non abbiamo mai trattato l input di utente. Nelle applicazioni web, l input dell utente si acquisisce tramite i moduli (o FORM) HTML. Anche se non avete mai costruito una pagina HTML contenente un form, avrete sicuramente riempito almeno uno di essi nel corso della vostra vita da navigator, con i vostri dati quali Nome, Codice Fiscale, Carta di Credito (per acquisti on line). In questa lezione daremo un cenno ai moduli HTML e faremo vedere come PHP acquisisce i dati da tali moduli. I tag che ci servono. Con l introduzione dei moduli (dalla versione 2.0), HTML ha raggiunto la sua massima interattività. Il tag <FORM> Un modulo è incluso tra i tag <FORM> e </FORM> : Sintassi : <FORM method= get post action= script.php >...modulo... </FORM> L attributo method può assumere i valori get o post. Se si imposta method= get, tutte le variabili ed il loro contenuto vengono inviati ad action (lo script php, asp o cgi che si è impostato) tramite una Querystring. Ad esempio, all invio del form il browser sarà indirizzato ad un URL del tipo : script.php?nome=domenico&cognome=nappo&eta=24 Tutto ciò che segue il carattere? viene detto Querystring e consiste in una serie di coppie nome-velore. Il metodo post invece, fa sì che le variabili vengano inviate allo script come un flusso separato e non appaiono nella barra di indirizzi del browser. Inoltre, con il metodo get c è una limitazione per quanto riguarda la quantità di informazioni da poter inviare. Con il metodo post tale limitazione non esiste. Il tag <INPUT> Il tag <INPUT> definisce gli elementi con cui l utente può interagire ed immettere il suo input. La sintassi è la seguente : <INPUT type= tipo_campo name= nome_campo > L attributo type definisce il tipo dell elemento di input da visualizzare, mentre name definisce il nome della variabile che viene passata allo script. In PHP la variabile si chiamerà semplicemente $nome_campo e conterrà il valore immesso dall utente.
I tag che ci servono. Di seguito è riportata una tabella contenente tutti i tipi di input supportati da HTML : type Descrizione TEXT Campo di testo (riga singola) PASSWORD Campo di testo per password (visualizza asterischi) RADIO Pulsanti di scelta (esclusiva) CHECKBOX Caselle di scelta HIDDEN Campo nascosto non visualizzato ma inviato SUBMIT Pulsante per l invio delle informazioni RESET Pulsante per resettare il modulo Il tag <SELECT> La sintassi è la seguente : <SELECT name= nome_campo [size=numero_elementi_visibili][multiple]> <OPTION [selected]> Opzione 1 <OPTION> Opzione 2... </SELECT> Un campo di selezione si presenta come un menu a discesa da cui poter effettuare una sola selezione (nel caso non siano presenti gli attributi size e multiple). Se un opzione è definita selected, quando il form viene visualizzato esso presenterà tale opzione come selezionata. Se è presente l attributo multiple è possibile effettuare selezioni multiple. In tal caso, l attributo size determina quanti elementi possono essere visualizzati (se quelli contenuti nel campo select è in numero superiore, il browser visualizzerà una barra di scorrimento). Il tag <TEXTAREA> E un tag che specifica un area di testo a più righe. In questo caso, data la quantità di informazioni da dover inviare, si dovrebbe utilizzare il metodo post nel tag <FORM>. La sintassi è la seguente : <TEXTAREA name= nome_campo rows=num_righe cols=num_colonne> Eventuale testo di default </TEXTAREA> Nella figura seguente è mostrata una pagina contenente un FORM con tutti i tipi di campo possibili. Utilizzeremo tale modulo per i nostri esempi successivi. Per migliorare la visualizzazione sul browser ed ottenere un aspetto più ordinato, potreste inserire all interno del FORM una tabella divisa in più righe e colonne, e in ogni cella immettere il campo (ad esempio
nella seconda colonna). Nella prima colonna della tabella, sulla riga corrispondente, metterete la descrizione del campo. Fig-1 Esempio di Form HTML. Di seguito è riportato il codice della pagina in questione : <html> <head> <title>modulo HTML</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#ffffff" text="#000000"> <form name="frm" method="post" action="script.php"> <input type="hidden" name="nascosto" value="esempio campo nascosto"> Nome : <input type="text" name="nome"> Cognome : <input type="text" name="cognome"> Email: <input type="text" name="email"> Hai la moto?: <input type="checkbox" name="trasporto[]" value="moto"> Hai l'auto?: <input type="checkbox" name=" trasporto[]" value="auto">
Come accedere all input di utente in uno script PHP. Hai una bici? : <input type="checkbox" name=" trasporto[]" value="bici"> Hai un'età compresa fra : 0-18 <input type="radio" name="eta" value="piccolo"> 19-30 <input type="radio" name="eta" value="medio"> 31-over <input type="radio" name="eta" value="grande"> <select name="professione"> <option selected>scegli la tua professione</option> <option value="studente">studente</option> <option value="commerciante">commerciante</option> <option value="imprenditore">imprenditore</option> <option value="dipendente">dipendente</option> <option value="operaio">operaio</option> <option value="pensionato">pensionato</option> </select> <select name="hobbies[]" size="4" multiple> <option value="musica">musica</option> <option value="sport">sport</option> <option value="computer">computer</option> <option value="libri">libri</option> <option value="grafica">grafica</option> <option value="scienze">scienze</option> </select> <input type="submit" name="submit" value="submit"> <input type="reset" name="reset" value="reset"> </form> </body> </html> Notate il nome che si è dato ai campi che prevedono scelte multiple (tarsporto[] e hobbies[]). Essi verranno memorizzati in un array nello script indicato in action (nel nostro caso è script.php). Notate anche l utilizzo del campo nascosto posto all inizio del form. Come accedere all input di utente in uno script PHP. Non c è niente di più facile da fare in PHP. In questo paragrafo scriveremo il codice di uno script PHP che visualizzerà le informazioni ricevute e validerà l input di utente. Utilizzeremo, a questo scopo, le regular expression per convalidare il nominativo e l email dell utente. Ecco di seguito tutto il codice dello script : <?PHP
/* file script.php esempio per gestione dell'input di utente Autore : Domenico Nappo Data : 10/02/2002 */ $error=0; $msg=''; if ($REQUEST_METHOD=='POST') { // se sono stati ricevuti i dati //controlla i dati inviati if (!check_nominativo($nome)) { $msg='<br>campo nome vuoto o non corretto<br>'; if (!check_nominativo($cognome)) { $msg.='campo cognome vuoto o non corretto<br>'; if (!check_email($email)) { $msg.='campo Email vuoto o non corretto<br>'; if (empty($eta)) { $msg.="scegli l'età<br>"; if (empty($professione)) { $msg.="scegli la professione<br>"; if (!count($hobbies)) { $msg.='scegli almeno un hobby!<br>'; if ($error) { include('modulo.htm'); print $msg; else { print 'I dati ricevuti sono corretti. Ecco il riepilogo: <br>'; print "Nome: $nome <br>"; print "Cognome: $cognome <br>"; print "Email: $email <br>"; print "Età: $eta <br>"; print 'I tuoi mezzi di trasporto sono :<ul>'; foreach($trasporto as $value) { print "<li>$value</li>"; print '</ul>'; print "La tua professione : $professione <br>"; print 'I tuoi hobbies sono :<ul>'; foreach($hobbies as $value) { print "<li>$value</li>"; print '</ul>'; print "<br> Il contenuto del campo nascosto è $nascosto"; // chiusura else not error //chiusura if POST else { // il modulo deve ancora essere visualizzato include ('modulo.htm');
Come accedere all input di utente in uno script PHP. ##################funzioni di utilità per la validazione dell'input############### function check_nominativo($nominativo) { if ((empty($nominativo)) (ereg("[^a-za-z\ ]+",$nominativo,$array))) return 0; else return 1; function check_email($email) { if ((empty($email)) (!ereg("([a-za-z0-9\.]+)(@{1)([a-za-z0-9]{2,)\.([a-za-z0-9]{2,)",$email,$array)) (ereg("([\ \<\>\\\/]+)",$email,$array))) return 0; else return 1;?> All inizio si controlla se sono stati inviati dei dati tramite un form (la variabile d ambiente in questione è $REQUEST_METHOD). Se ci sono dati inviati da un form si passa alla validazione degli stessi, altrimenti di visualizza codice del modulo html contenuto nel file modulo.htm, tramite una semplice chiamata di include(). Quando lo script trova qualche errore o incongruenza nei dati, pone alta la variabile di flag $error e imposta un messaggio nella variabile $msg. Se ci sono errori ( quest si controlla tramite l istruzione if($error) ), si visualizza di nuovo il modulo ed in coda i messaggi di errore memorizzati nella variabile $msg. Se tutti i dati sono corretti, viene visualizzata una pagina contenente il riepilogo delle informazioni. Ad esempio : I dati ricevuti sono corretti. Ecco il riepilogo: Nome: domenico Cognome: nappo Email: mail@mail.it Età: medio I tuoi mezzi di trasporto sono : moto bici La tua professione : studente I tuoi hobbies sono : musica sport libri Il contenuto del campo nascosto è esempio campo nascosto Se ci sono stati errori, come l immissione di un indirizzo email errato, vengono visualizzati gli errori in fondo alla pagina : Campo Email vuoto o non corretto Scegli almeno un hobby! Siamo arrivati al termine dell undicesima lezione. Nella prossima ci sarà un esempio completo descritto nei particolari. Saluti!
?2002 Powered By Domenico Nappo, Domenico Surace e Manuali.net L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.