Scrivere il codice di sicurezza CAPTCHA in Php

Siti dinamici con PHP
Impara a creare siti dinamici professionali con PHP

Scritto da Luca Ruggiero nella sezione Php

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.

I più cliccati della sezione Php

:: Redirect in Php (103.061)

:: Upload di file in Php (33.754)

:: Refresh temporizzato in PHP (28.119)

:: Un carrello della spesa in PHP (23.881)

:: Creare un menu dinamico in Php (21.325)

:: Pagamenti online con PayPal e PHP (17.712)

:: Inviare email in formato Html con Php (16.037)

:: Convertire una stringa in maiuscolo e in minuscolo in Php (16.003)

:: Ottenere le dimensioni di un'immagine con PHP (15.504)

:: Indicare il percorso della pagina corrente in Php (14.702)

IN EVIDENZA
DOWNLOAD