Captcha verifikacija za kontakt forme

Koliko god mi se unošenje captcha karaktera ne dopada kada želim da se registrujem na neki sajt ili da komentarišem na blogovima koje čitam, toliko moram da priznam da su te vrste verifikacija neophodne i da je sa njima web čistije mesto. OK, naravno da se može prigovoriti da ne postoji bezbedno rešenje jer se on-line već mogu naći skripte i plaginovi koji omogućavaju razbijanje captcha zaštite.

Ukupno gledajući captcha je nepremostiva prepreka za mnoge botove i spamere. Predstavljam vam jednu vrlo jednostavnu i praktičnu skriptu koja se lako programira i što je najbitnije radi posao.

Kada se dinamički generiše slika najbolje je koristiti session promenljivu za čuvanje niza karaktera koji čine captchu.


<?php
 session_start();
 $text = rand(10000,99999);
 $_SESSION["vercode"] = $text;
 $height = 25;
 $width = 65;

$image_p = imagecreate($width, $height);
 $black = imagecolorallocate($image_p, 0, 0, 0);
 $white = imagecolorallocate($image_p, 255, 255, 255);
 $font_size = 14;

imagestring($image_p, $font_size, 5, 5, $text, $white);
 imagejpeg($image_p, null, 80);
 ?>
 

Snimite ovaj kod pod nazivom fajla captcha.php. Fora je da se nasumično generiše broj od 10000 do 99999 koji se potom dodeljuje u $_SESSION[‘vercode’]. Onda se generiše sličica dimenzija 25 x 65 piksela sa karakterima veličine fonta 14. Svaki put kada se pozove fajl, generiše se drugi broj i kreira se odgovarajuća sličica.

Sledi sama forma za slanje poruke.

<form action="submit.php" method="post">
Komentar: <textarea name="coment"></textarea>

Unestite karaktere sa slike <img src="captcha.php"><input type="text" name="vercode" />
<input type="submit" name="Submit" value="Submit" />
</form>

I na kraju nam preostaje da napravimo skriptu za samo slanje poruke koja ujedno i proverava da li se uneti karakteri poklapaju sa karakterima koji su nasumično generisani i koje čuva $_SESSION[‘vercode’].


<?php
session_start();
if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') {
 echo '<strong>Incorrect verification code.</strong>';
} else {
 // add form data processing code here
 echo '<strong>Verification successful.</strong>';
};
?>

To je to. Skripta radi sasvim ok, izgleda fino i korisnici nemaju problema da pročitaju generisane karaktere. Sama skripta sa generisanjem slika nije međunajbezbednijim metodama captcha zaštite, ali je bar sjajna za vežbanje PHP programiranja 🙂

Advertisements

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s