INTERNET EXPLORER? Ti consiglio di navigare questo sito con Mozilla Firefox oppure con Google Chrome.

Scrivere il codice di sicurezza CAPTCHA in Php

Autore: Luca Ruggiero | Tell a Friend

Corso PHP
Impara a creare siti dinamici professionali con PHP!

Corso MySQL
Impara a gestire il famoso database gratuito!

Corso Linux
Impara a gestire il famoso sistema operativo open source!

Esaminiamo in questo articoli come scrivere il codice CAPTCHA (acronimo di Completely Automated Public Turing test to tell Computers and Humans Apart, ovvero test di turing pubblico e completamente automatico per distinguere computer e umani), in PHP, onde gestire i motori di SPAM che invadono quotidianamente i nostri moduli HTML.

Creiamo un file PHP, chiamiamolo captcha.php e corrediamolo del seguente codice:

<?
    session_start();
    $stringa = md5(microtime());
    $risultato = substr($stringa, 0, 5);
    $immagine = imagecreatefromjpeg("captcha.jpg");
    $testo = imagecolorallocate($immagine, 255, 255, 255);
    imagestring($immagine, 3, 20, 10, $risultato, $testo);
    $_SESSION['CONTROLLO'] = $risultato;
    header("Content-type: image/jpeg");
    imagejpeg($immagine);
?>
Creiamo poi un'immagine colorata di dimensioni, più o meno, 80X30 pixel e chiamiamola captcha.jpg.

Richiamiamo poi, all'interno del modulo HTML, l'immagine come segue:
<img src="captcha.php">
Il sistema è pronto, ma spieghiamo cos'abbiamo fatto:
session_start();
apriamo una sessione per salvare il valore del codice di controllo, onde poterne recuperare il valore in fase di validazione dei campi del form HTML;
$stringa = md5(microtime());
$risultato = substr($stringa, 0, 5);
creiamo una stringa che estrae un valore alfanumerico casuale di 5 caratteri;
$immagine = imagecreatefromjpeg("captcha.jpg");
recuperiamo l'immagine JPG da utilizzare per il CAPTCHA;
$testo = imagecolorallocate($immagine, 255, 255, 255);
impostiamo il testo di colore bianco, onde distinguerlo (sia pur un po a fatica) all'interno dell'immagine colorata;
imagestring($immagine, 3, 20, 10, $risultato, $testo);
impostiamo, rispettivamente, la grandezza del testo e la distanza dal left e dal top dei margini interni dell'immagine;
$_SESSION['CONTROLLO'] = $risultato;
recuperiamo il valore del codice di controllo e lo memorizziamo in usa sessione, o volendo andrebbe bene anche un cookie;
header("Content-type: image/jpeg");
modifichiamo le intestazioni della pagina in modo da poterla richiamare come se fosse realmente un file JPG;
imagejpeg($immagine);
mostriamo l'immagine.

IN EVIDENZA
HOT LINKS