Distinguere l’uomo dalla macchina in modo accessibile

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.


Pubblicato

in

, ,

da

Tag:

%d blogger hanno fatto clic su Mi Piace per questo: