Php ile kendi captcha kodlarınızı yazın
Geçenlerde bir arkadaşım için captcha lazım olduğunda aramıştım, fakat internette bulduğum örnekleri bir türlü çalıştıramamıştım.
Ben de oturdum yazdım, basit ama kullanışlı birşey ortaya çıktı. 2 adet dosyamız var birincisi resim.php diğeri ise iletisim.php bu dosyaların kodlarını veriyorum
resim.php
<?php session_start(); $image = imagecreate(50,20); $background = imagecolorallocate($image,0,0,0); $foreground = imagecolorallocate($image,255,255,255); imagestring($image,5,5,1,$_SESSION["resimguvenlik"],$foreground); header("Content-type: image/jpeg"); imagejpeg($image); ?>
iletisim.php
<?php session_start(); if(!isset($_POST['guvenlikkodu'])){ $random = rand(1000,9999); $_SESSION["resimguvenlik"] = $random; } if($guvenlikkodu!=$_SESSION["resimguvenlik"]){ //Burada güvenlik kodunun yanlış olduğuna dair uyarı veriyoruz }else{ ///Burada resim kodu doğru ise yapılacakları sıralıyoruz
bu da form ile ilgili html kodlarına bir örnek
<img alt="" src="resim.php" /> <form action="iletisim.php" method="post"><input type="text" name="guvenlikkodu" /> <input type="submit" value="Gönder" /> </form> <pre>
Peki burada ne yaptık? ilk önce isset kullanarak daha önceden o sayfaya form post bilgisinin gelip gelmediğini kontrol ettik, bunu yapmazsak bir işlem için iki kod üretecektir. birincisi sayfa ilk yüklenirken, ikincisi butona basıldığı anda tekrar.
Ürettiğimiz bu kodu bir session(oturum) bilgisine aktardık, bunu yapıyoruz çünkü sayfa yeniden yüklendiğinde bilgiyi bir yerde tutmamız lazım. Daha sonradan sessiona kaydettiğimiz bilgi ile formdan gelen bilgiyi karşılaştırdık, eğer doğruysa şunları şunları yap dedik, vs…
Tabi ki bu kodların en basite indirgenmiş hali, mesala karakterler biraz daha zor okunsun, botlar kolay anlayamasın diye araya bazı simgeler karakterler sıkıştırabilirsiniz
Php ile captcha oluşturmayı anlatmaya çalıştım, umarım işinize yarar…