Guide, risorse e articoli per webmaster e webdesigner

Add to Google Reader or Homepage

sabato 17 maggio 2008


Menù

Home
Html & XHtml
Css
Javascript
Php
Motori di ricerca
News web
Contatti

Login Form






Password dimenticata?
Nessun account? Registrati
Home arrow Php arrow Articoli php arrow Codice di sicurezza captcha in php

Codice di sicurezza captcha in php Stampa E-mail
Scritto da Vincenzo   
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 .

 
< Prec.   Pros. >


Feed Rss


Corso PHP Completo
Corso completo per la creazione di siti Web dinamici. Corso con assistenza ed attestato finale!
Corso MySQL
Gestione del database open-source. Corso con assistenza ed attestato finale!