Crearea unui CAPTCHA (captcha) în PHP

De-a lungul timpului, site-ul este câștigă în popularitate, și este nevoie de protectie impotriva spamului. În acest articol vă voi spune cum vă puteți crea propria captcha în PHP.

Captchas sunt folosite, de regulă, atunci când se completează formularele de pe site-ul web. Algoritmul funcționează după cum urmează: pentru a forma o imagine captcha este prezent cu unele secvență de caractere aleatoare. există un câmp pentru a introduce un conținut de utilizator captcha lângă ea. Imagine, de fapt, este un script PHP pe care le generează. În acest caz, conținutul text captcha generat este stocat undeva. Atunci când prezintă un script formular compară valoarea stocată a captcha pe care utilizatorul a introdus. În cazul în care valorile se potrivesc, atunci cererea este acceptată sau respinsă.

Propun punerea în aplicare este foarte simplu, în același timp, are suport pentru fonturi TrueType, precum și un canal alfa (fundal transparent), astfel încât CAPTCHA este o alegere bună în orice design.

Rețineți că este nevoie de script-ul pentru extensia PHP-GD, conectați-l în setările.

În primul rând trebuie să decidă cu privire la tipul. Corespunzător font ttf-fișierul selectat trebuie să fie pus într-un director cu un viitor captcha script. Am ales pentru Comic Sans font CAPTCHA MS. corespunde fișier comic.ttf. Fișierele de fonturi pot fi găsite în directorul sistem de fonturi de sistem de operare, sau descărcate de pe Internet.

În continuare, un script captcha.php. La începutul variabilelor script sunt declarate necesare:

Într-un șir de caractere alfabet transferat. Acestea sunt personajele care vor lua parte la formarea de CAPTCHA. Am enumerat un capital litere latine pot fi adăugate, cum ar fi numere.

Specifică lungimea CAPTCHA (6 simboluri).

Lățimea și înălțimea imaginii generate. Este necesar, în primul rând, alegeți dimensiunea în funcție de designul site-ului dvs., și în al doilea rând, pentru a seta lățimea optimă pentru lungimea specificată de CAPTCHA scrisorile nu au fost prea strâns presate una pe cealaltă.

Aici specificați fișierul de font. În principiu, acesta poate fi plasat într-un subdirector, de exemplu, director de fonturi, atunci conținutul variabilei ar trebui să fie de format: fonturi / comic.ttf.

Deoarece variabilele tratate. În continuare, vom trece direct la punerea în aplicare. În primul rând, trebuie să specificați clientul a solicitat un script care conținutul de răspuns nu reprezintă text și imagine. Pentru a face acest lucru, suprascrie conținutul-la poziția HTTP-tip de conținut:

Crearea unei imagini de o anumită dimensiune:

Expune pavilion necesitate salva imagini alfa:

Creați o culoare de fundal. Acesta va fi de culoare complet transparente:

Completați această imagine color creată de nostru:

Inițializeze o variabilă care va conține valoarea de text a captcha:

În continuare organizat ciclu cu numărul de iterații egal cu CAPTCHA lungime (Caplen):

La fiecare etapă a ciclului este generat o dată un simbol al CAPTCHA și desenate pe imagine. Ia caracterul aleatoriu al alfabetului nostru și adăugați-l captcha:

Se calculează poziția personajului generat pe imaginea de pe axa x:

Această poziție depinde de lățimea numărului imaginii, lungimea captcha și simbolul secvenței. În continuare vom adăuga un pic de „accident“ în această situație:

Se calculează poziția personajului generat pe imaginea pe axa y:

Poziția depinde de dimensiunea fontului și înălțimea imaginii.

Generează o culoare aleatorii pentru simbolul. Această culoare nu ar trebui să fie prea ușoară, astfel încât fiecare dintre componentele de culoare (R, G și B), pentru a genera o serie de 0-100:

Pentru simbolul curent genera aleatoriu unghiul de înclinare sale în intervalul -25..25 grade la scrisoarea afișat într-o CAPTCHA „Dance“:

În cele din urmă, trage un caracter cu toate caracteristicile de mai sus obținute în imagine:

Această linie se termină în corpul buclei. Când ciclul a terminat, un captcha variabila va contine captcha valoare de tip text, IM și imaginea va fi de captcha au fost trase. Avem nevoie de un loc pentru a stoca valoarea CAPTCHA la script-ul principal, care foloseste aceasta ar putea verifica valoarea de utilizator. Cel mai bun loc pentru aceasta - variabila de sesiune. Inițializare sesiune și stochează captcha:

În cele din urmă, de ieșire captcha imagine generată:

Și eliberează memorie, derivată sub imagine:

Mai jos puteti vedea o demonstrație a CAPTCHA rezultat (refresh a imaginii):

Puțin mai târziu, am adăuga un captcha script gata și un exemplu de utilizare a acestuia în HTML-forme.