Captcha ce se bazeaza pe o operatie matematica
3Multi dintre voi poate doresc sa opreasca spamul pe blogurile lor sau in sistemele de logare folosind un captcha.Acesta poate fi de mai multe feluri : captcha clasic , cand va trebui sa introduceti un cuvant , captcha folosind o operatie simpla de adunare scadere,inmultire impartire etc , o comanda vocala etc.
Astazi m`am gandit sa ofer o mica idee pentru programatorii ce doresc sa faca un captcha folosindu-se de o operatie matematica.
function captcha($limit1,$limit2,$operation,$w,$h) { $v1 = rand(1,$limit1); //generam primul numar in intervalul corespunzator $v2 = rand(1,$limit2); //generam al doilea numar in intervalul corespunzator switch($operation) //calculam valoarea corecta { case '+': $_SESSION['captcha'] = $v1+$v2; break; case '-': $_SESSION['captcha'] = $v1-$v2; break; case '*': $_SESSION['captcha'] = $v1*$v2; break; case '/': $_SESSION['captcha'] = $v1/$v2; break; } $img = imagecreate($w, $h); //cream imagine de $w*$h $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); $grey = imagecolorallocate($img, 205, 204, 205); imagefill ($img, 0, 0, $black); //facem un dreptunghi negru imagestring ($img, rand(1,10), rand(1,35), rand(5,10), $v1.$operation.$v2."=?", $white); //scriem imagerectangle ($img, 0, 0,$w-1,$h-1,$grey); imageline ($img, 0, $h/2,$w, $h/2, $grey); //adaugam niste linii pentru a ingreuna crackingul imageline ($img, $w/2,0, $w/2, $h, $grey); header("Content-Type: image/jpeg"); //anuntam faptul ca va fi o imagine imagejpeg($img); //afisam imaginea }
Folosire :
captcha(20,21,’+’,100,30);
Rezultat :
Practic am creat un captcha ce va face operatia de adunare, cu valori cuprinse intre 1 si 20,respectiv 1 si 21(primele 2 argumente ale functiei),urmatorul reprezentand operatia(adunare,scadere,inmultire,impartire).Ultimile 2 argumente reprezinta latimea,respectiv inaltimea imaginii generate.
Evident aceast script poate fi facut mai avansat,generand culorile random,dar aceasta este tema dumneavoastra. Hint : $white,$black,$grey.
Pentru a verifica daca a introduc captcha`ul corect va trebui sa faceti o verificare asemanatoare cu cea de mai jos :
$captchaDeVerificat = $_POST['c']; if($captchaDeVerificat == $_SESSION['captcha']) { // ok } else { //error }
Pana data viitoare,numai bine! 😀
Acum am aflat mai mute despre asta, interesant, bravo! Vad ca merge bine categoria cu PHP. ;)Keep it on work !
[…] de captcha ce va simula aceleasi verificari ca mai sus.Pentru asta puteti studia implementarea unui sistem Captcha ce se bazeaza pe o operatie matematica intr-o pagina web scrisa pe […]
Da nu era bun si un is_numeric?:))
$captchaDeVerificat = htmlspecialchars($_GET['c']);
if(!is_numeric($captchaDeVerificat)) die("Rezultatul nu este numeric");