Aș dori să ia în considerare utilizarea bibliotecii Zend_Captcha_Image separat de ZendFramework sau de celelalte componente ale acesteia. Acest lucru va permite bibliotecii să fie utilizată în orice proiect, fără a introduce cod inutil și fără a complica structura aplicației.
Pe Internet există o mulțime de publicații similare, cu singura diferență că toți consideră Zend_Captcha_Image în tandem cu Zend_Form, iar eu, așa cum am menționat deja mai sus, aș dori să evit acest lucru. Un motiv, cel puțin, am. De exemplu, a trebuit în mod repetat să pună în aplicare o imagine protectoare în CMS, unde inițial era absent. Desigur, formele pentru care sa folosit captcha au fost create de instrumentele CMS obișnuite și a fost imposibil sau inutil să folosești Zend_Form.
De fapt, de ce Zend_Captcha_Image? Dacă ați studiat vreodată piața CMS, atunci nu ați putut să nu observați că la majoritatea motoarelor imaginea de protecție a captcha are același aspect. Foarte popular este biblioteca, distribuită de captcha.ru. În final, această captură este perfect recunoscută de orice bot spam, ceea ce îl face complet inutil.
Poate scrierile mele despre Zend_Captcha_image cel puțin cineva mă va încuraja să merg mai departe în găsirea unei soluții la problema protejării site-ului de spam.
Pentru a lucra, Zend_Captcha_image va necesita disponibilitatea unei versiuni adecvate pentru GD. Acest lucru nu ar trebui să fie o problemă, totuși, dacă ceva nu funcționează, asigurați-vă că GD este prezent (vezi în phpinfo).
Mai întâi de toate, să scoatem din bibliotecile necesare din ZendFramework. Din păcate, este imposibil să se ia doar un Zend_Captcha_image, deoarece are o serie de dependențe, inclusiv interfața pentru lucrul cu sesiuni, Zend_Loader și excepții. Acestea sunt următoarele fișiere:
Mai întâi, scrieți un script care va desena o imagine, va crea o sesiune și așa mai departe.
Că scenariul a fost puțin mai interesant, am decis că ar fi foarte bine să desenezi o imagine cu diferite fonturi. Acest lucru va complica oarecum ghicitul capturii noastre. Lista de fonturi este stocată în matricea $ fontsBase. Firește, este mai bine să folosiți câteva fonturi exotice și să evitați utilizarea sistemului public.
Apoi, conectăm biblioteca însăși și creăm un obiect. Pentru a evita dependențele manual, tocmai am adăugat calea către directorul cu ZF în calea include_path. Practică standard atunci când folosiți cele mai multe cadre.
După crearea obiectului, setați setările pentru imaginea de protecție. Numele metodelor vorbesc de la sine. Rămâne să explicăm numai valoarea lui Zend_Captcha_Image :: setTimeout (). Această metodă stabilește durata de viață a sesiunii, cu alte cuvinte, pentru numărul de secunde alocate de noi, utilizatorul ar trebui să depășească cumva umplerea formularului. În caz contrar, va trebui să repete introducerea codului de securitate, deoarece prima va deveni nevalidă. Cred că 10 minute vor fi mai mult decât suficient.
Cu aceste setări, obținem aproximativ următoarea imagine:
De asemenea, rețineți că directorul specificat în Zend_Captcha_Image :: setImgDir () trebuie să existe și să fie scris. Voi pune imaginile generate în ea. Nu este necesar să vă faceți griji cu privire la curățenie, se va întâmpla automat.
În ultima linie de cod, obținem ID-ul sesiunii, care în combinație este numele fișierului imagine generat. Stocăm într-o variabilă pentru utilizarea ulterioară în formularul html.
Cu forma de tot este corny.
Câmpul captchaCode este folosit pentru a introduce textul dintr-o imagine protectoare. În câmpul captchaId ascuns, transmitem ID-ul sesiunii într-un script care validează formularul.
Validatorul formularului. Verificați codul captcha
Aici totul este la fel de simplu ca asta. Printr-o schemă deja cunoscută, conectăm biblioteca necesară, în acest caz pentru a lucra cu sesiunile, pentru a obține datele sesiunii necesare și pentru a efectua verificarea codului introdus din imagine.
Pentru parametrii suplimentari care pot fi setați pentru imaginea Captcha generată, puteți citi în ghidul Adaptorului oficial Zend_Captcha. Nu mai sunt mulți plecați.
Dacă selectați fonturi bune, setați un nivel decent de zgomot, veți obține o protecție bună împotriva spam-urilor în formulare. Principalul lucru, nu uitați că în plus față de roboți, oamenii vor dori să vă completeze formularul. Nu creați codul din imagine necitit. Cel mai enervant atunci când este imposibil să dezasamblați caracterele de pe captcha și, prin urmare, să le introduceți corect.
De asemenea, am răspândit arhiva cu scenariile, care au fost discutate aici. Zend_Captcha_Image_source