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.