Atlantide Web Island

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Tutorials Php e MySql Protezione con un Captcha

Protezione con un Captcha

Con l'acronimo CAPTCHA si vuole intendere un meccanismo per evitare che particolari programmi spammosi s'inseriscano nelle zone ad accesso riservato dei websites.
Il metodo classico è richiedere all'utente di comporre una serie di caratteri distorti riportati su un'immagine con uno sfondo confuso.
Sebbene gli spiders si siano evoluti e spesso riescono a by-passare questa protezione, utilizzare un CAPTCHA può ridurre di molto le iscrizioni sgradite.
Entriamo nel merito iniziando a compilare il file che andrà a creare un'immagine casuale la quale verrà memorizzata in una sessione.

Nella prima parte del nostro file abbiamo l'avvio della sessione, una variabile che ci servirà per definire la sessione dell'immagine e i parametri configurabili dal webmaster. Come vediamo nella variabile $baseList sono memorizzati numeri, lettere minuscole e maiuscole. Editate i parametri a vostro piacimento

Abbiamo già trattato l'argomento delle librerie GD, in pratica si va a creare un'immagine con le dimensioni specificate all'inizio dello script e le si riempe attraverso due funzioni :
1) imageline : traccia una linea unendo due punti. La funzione ha bisongo di 6 parametri; il target, ossia l'immagine, le coordinate x e y del punto 1 e del punto 2, il colore della linea. Abbiamo usato la funzione mt_rand per rendere casuali questi parametri.
2)imagecolorallocate : Riempe un'immagine con uno sfondo, ha bisogno di quattro parametri : il target, e i valori RGB dei colori primari. Anche qui abbiamo usato mt_rand per casualizzare il tutto.

Con questo ulteriore ciclo, che si ripete per quante volte indicato nella variabile $lenght andiamo a creare una stringa casuale di caratteri, estratti dalla variabile $baseList che verrà poi sovrapposta allo sfondo generato in precedenza. Anche il colore delle singole lettere è casuale.

Informiamo il browser che si troverà di fronte un'immagine e non una pagina in php e memorizziamo l'immagine generata nell' array supeglobale di sessione.

Questo è il codice per generare un captcha funzionante.
Adesso andiamo a aggiungere il sistema di protezione al modulo login che abbiamo creato in precedenza.
Visto che la sessione è già attiva, attraverso l'inclusione del file header.php, non c'è bisogno di dichiararla, ma attenzione, se utilizziamo il captcha su un altro modulo ricordatevi d'inziare il codice con session_start();. Non dovremo far altro che aggiungere un nuovo campo di input nel modulo al quale daremo il name code e mostrare l'immagine del captcha al visitatore, attravero sul semplice tag html.

Chiaraemente bisogna fare attenzione al percorso smile.
Dopo di che, faremo un controllo sul nuovo input confrontandolo con la sessione del captcha, in caso di errore avremo il consueto blocco dello script.
Ecco il codice del nuovo login.php !

Come al solito v'invito a usare il forum per i vostri problemi con i codici ma anche per suggerimenti e critiche smile.
Buon PHP a tutti

Ultimo aggiornamento Domenica 14 Dicembre 2008 22:06  
Copyright © Atlantide 2008 - Tutti i diritti riservati - Siti amici • Giochi onlineVideo CalcioDivertimentoPerline