Premesso che sono sempre contrario a postare codice intero, perché ritengo che il forum non debba essere un bancomat del codice, ti passo la funzione che genera la captcha letterale.
Codice PHP:
########################### CAPTCHA LETTERALE ###########################
function generateCaptcha() {
$numeri_lettere[1] = "uno";
$numeri_lettere[2] = "due";
$numeri_lettere[3] = "tre";
$numeri_lettere[4] = "quattro";
$numeri_lettere[5] = "cinque";
$numeri_lettere[6] = "sei";
$numeri_lettere[7] = "sette";
$numeri_lettere[8] = "otto";
$numeri_lettere[9] = "nove";
$numeri_lettere[10] = "dieci";
$numeri_lettere[11] = "undici";
$numeri_lettere[12] = "dodici";
$numeri_lettere[13] = "tredici";
$numeri_lettere[14] = "quattordici";
$numeri_lettere[15] = "quindici";
$numeri_lettere[16] = "sedici";
$numeri_lettere[17] = "diciassette";
$numeri_lettere[18] = "diciotto";
$numeri_lettere[19] = "diciannove";
$numeri_lettere[20] = "venti";
$numero_1 = rand(1, 20);
$numero_2 = rand(1, 20);
$somma_numerica = $numero_1 + $numero_2;
$numero_in_lettere_1 = $numeri_lettere[$numero_1];
$numero_in_lettere_2 = $numeri_lettere[$numero_2];
$stringa_somma = $numero_in_lettere_1. " + " . $numero_in_lettere_2;
$_SESSION['somma'] = $somma_numerica;
return $stringa_somma;
}
Come avrai notato lo script è composto da un array di numeri scritti in lettere.
La funzione genera due numeri random, compresi tra 1 ed il numero massimo espresso nell'array, ne fa la somma che viene poi salvata in una sessione, e crea una stringa con i due numeri in lettere da mostrare all'utente.
Nella tua form, lì dove vorresti piazzare la captcha non fai altro che mandare in echo la funzione.
Codice PHP:
echo generateCaptcha();
Devi prevedere un campo per inserire il risultato della somma (in numeri).
Una volta che l'utente abbia premuto il tasto di invio della form, non devi fare altro che controllare che il numero scritto dall'utente (la somma numerica cioè di quello che è stato presentato sotto forma di lettere) sia uguale al numero salvato nella sessione.
Semplice ed anche accessibile, anche uno screen reader di un utente disabile potrebbe leggere questa captcha.... non
trovi???
Se vuoi aumentare i numeri possibili da mostrare non devi fare altro che aggiungere righe all'array e modificare il valore massimo nelle funzioni RAND().