Il modulo di esempio
Per esempio pensiamo ad un modulo dove un utente deve segnare solo il suo nome e cognome per partecipare ad un pranzo tra amici:
<form method="post" action="scrivi.php"> <p> <label for="nome">Nome</label> <input type="text" value="" id="nome" name="nome" /> </p> <p> <label for="nome">Cognome</label> <input type="text" value="" id="conome" name="cognome" /> </p> <p> <input type="submit" name="conferma" value="conferma" /> </p> </form>
Le informazioni descritte sono sufficienti per un esempio semplice, corretto e completo.
Questa pagina, invia i dati ad un’altra denominata “scrivi.php” ( ma potrebbe essere, scrivi.asp o scrivi.cfm, non farebbe differenza: l’importante è che lato server il sistema preveda uno script che risponda in modo adeguato ) che si preoccupa di salvare nel database le informazioni specificate sul modulo.
Il codice PHP relativo esegue una insert nel database:
/* Codice per l'inizializzazione del Database */ $connessione = mysql_connect('localhost', 'user', 'password') or die('errore durante la connessione'); mysql_select_db('CAPTCHA', $connessione); $cognome = $_POST['cognome']; $nome = $_POST['nome']; $query = "insert into partecipanti (cognome, nome) values ('$cognome', '$nome');"; mysql_query($query, $connessione) or die('errore nella insert ' . $query); mysql_close($connessione); header('location: visualizza.php');
Il codice che si preoccupa della visualizzazione dell’elenco invece sarà il seguente:
/* Codice per l'inizializzazione del Database */ $connessione = mysql_connect('localhost', 'user', 'password') or die('errore durante la connessione'); mysql_select_db('CAPTCHA', $connessione); $query = "select * from partecipanti order by cognome, nome"; $result = mysql_query($query, $connessione); echo('<ul>'); while($partecipante = mysql_fetch_assoc($result)){ $cognome = $partecipante['cognome']; $nome = $partecipante['nome']; echo("<li>$cognome $nome</li>"); } mysql_free_results($result); echo('</ul>'); mysql_close($connessione);
Questo codice, quindi, sarebbe particolarmente vulnerabile ai sistemi automatici: non esistono filtri di riconoscimento come si può notare.
A questo punto andiamo a risolvere il problema in modo accessibile utilizzando diverse modalità di approccio.