Per evitare che i bot automatici prendano di mira i moduli html presenti sui nostri siti, si può ricorrere all’inserimento di un codice di sicurezza che invita l’utente a copiare alcuni caratteri alfanumerici in un campo di testo prima di inviare un form di dati.
In questo tutorial verrà esaminato il codice di sicurezza "Captcha", (acronimo di Completely Automated Public Turing test to tell Computers and Humans Apart, ossia test di turing pubblico, completamente automatico che distingue i computer dagli umani).
Verrà creata automaticamente un’immagine con dei caratteri alfanumerici; i caratteri dell’immagine devono essere copiati in un campo prima di inviare il form, in questo modo i bot automatici, che non riescono a leggere i caratteri dell’immagine, non saranno in grado di inviare il form.
Dopo aver creato una pagina chiamata "codice_captcha.php" bisogna inserire al suo interno il seguente script. Il suo funzionamento è spiegato in dettaglio nei commenti.
<?php
/*Apro la sessione*/
session_start();
/*Creo una stringa ed estraggo da essa un valore casuale di cinque caratteri alfanumerici*/
$stringa = md5(microtime());
$risultato = substr($stringa, 0, 5);
/*Definisco l'immagine che verrà utilizzata come base per il captcha*/
$img = imagecreatefromjpeg("base_captcha.jpg");
/*Definisco il colore del testo, in questo caso il bianco*/
$testo = imagecolorallocate($img, 255, 255, 255);
/*Definisco le dimensioni e le distanze dai bordi del testo*/
imagestring($img, 3, 20, 10, $risultato, $testo);
/*Memorizzo il codice in una sessione*/
$_SESSION['CODICE'] = $risultato;
/*Modifico l'intestazione della pagina, in questo modo è possibile richiamarla come se fosse un'immagine*/
header("Content-type: image/jpeg");
/*Visualizzo l'immagine*/
imagejpeg($img);
?>
Avrete notato questa riga di codice:
header("Content-type: image/jpeg");
Serve a far in modo di poter richiamare la pagina come se fosse un’immagine jpeg, quindi non ci resta che inserire questo codice nella pagina del form:
<form method="post" action="controllo.php">
<img src="codice_captcha.php" alt="Codice di sicurezza Captcha" />
<br />
<p>
Inserisci nel campo sottostante i caratteri riportati nell'immagine:
</p>
<input type="text" id="codice_sicurezza" name="codice_sicurezza" />
</form>
Nella pagina di controllo (controllo.php), dove verranno inviati i valori del form, bisogna innanzitutto memorizzare i caratteri inseriti dall’utente in una variabile:
$codice_sicurezza=$_POST['codice_sicurezza'];
e poi confrontarli con quelli visualizzati sull’immagine.
Se invece volete inserire un’ indirizzo e-mail anti-spam potete consultare l’articolo relativo al mailto antispam .
Popularity: 13% [?]
Vuoi essere sempre aggiornato??? Iscriviti ai feed o invia un trackback
Nessun commento, scrivi tu il primo!
Articoli correlati