Nei form sui nostri siti abbiamo spesso attacchi e spam? Non ci sono problemi possiamo usare captcha come soluzione. Oggi ci sono molte soluzioni legate a servizi esterni come le API di sicurezza di google. Ma se vogliamo un sistema veloce e gestibile in casa ecco un semplice esempio.

$captchaString = substr(str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"), 0, 5);
$_SESSION['captcha'] = $captchaString;
$image = imagecreatetruecolor(150, 50);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 150, 50, $white);
imagettftext($image, 20, rand(-10, 10), 20, 30, $black, 'font/sewer.ttf', $captchaString);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

Come si nota dal codice sopra creiamo la stringa di caratteri da utilizzare a random. Questi sono impostati a 5 ma possiamo fare il codice più lungo se vogliamo. Il codice lo andiamo a assegnare a una variabile di sessione, quindi creiamo un immagine con il nostro codice.

A questo punto basta incorporare l’immagine nel nostro form e fare la verifica se il codice inserito è uguale a quello in sessione.

Da queto link è possibile scaricare l’esempio completo di tutto:

https://github.com/oldpan73/phpcaptcha