:: ANASAYFA » PHP » Güvenlik Kodu Kontrolu
 
Güvenlik Kodu Kontrolu

Muhtamelen bir çok sitede karşınıza çıkmıştır guvenlik kodu. sizden resimde gördüğünüz karakterleri girmenizi ister. Bunun amacı formu dolduran kişinin insan olup olmadığını anlamak böylece hazır olarak yazılmış kodlar ile sitenize sürekli form bilgileri gönderilip çökmesine engel olmaktır. Buna kısaca insan kontrolü yada güvenlik kontrol kodu diyoruz.

Bunu nasıl yapacağımıza geçmeden önce bunun için hostunuzda GD desteğinin olması gerektiğini söylemem gerekir. Eğer aşağıdakiler bire bir uyguladığınız da hata alıyorsanız host şirketi ile görüşün ve hostunuzda GD desteği olup olmadığını öğrenin.

Öncelikle güvenlik kodumuzu tutacak database tablolarını oluşturmamıs gerekir.

SecurityCode.SQL Dosyası İçin Tıklayın

Daha sonra güvenlik kodunu kullanıcılara gösterecek PHP güvenlik scriptimizi yazalım.

 

<?PHP
if (isset($HTTP_GET_VARS["refid"]) && $HTTP_GET_VARS["refid"]!="") {
   $referenceid = stripslashes($HTTP_GET_VARS["refid"]);
} else {
   $referenceid = md5(mktime()*rand());
}

$font = "courbd.ttf";

$bgurl = rand(1, 3);
$im = ImageCreateFromPNG("bg".$bgurl.".png");

$chars = array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k",
"K","l","L","m","M","n","N","p","P","q","Q","r","R","s","S","t","T","u","U","v",
"V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8","9");
if(isset($_GET['t']))
    $length = $_GET['t'];
else
    $length = 5;
$textstr = "";
for ($i=0; $i<$length; $i++) {
   $textstr .= $chars[rand(0, count($chars)-1)];
}

$size = rand(14, 16);
$angle = rand(-5, 5);
$color = ImageColorAllocate($im, rand(0, 100), rand(0, 100), rand(0, 100));

$textsize = imagettfbbox($size, $angle, $font, $textstr);
$twidth = abs($textsize[2]-$textsize[0]);
$theight = abs($textsize[5]-$textsize[3]);
$x = (imagesx($im)/2)-($twidth/2)+(rand(-20, 20));
$y = (imagesy($im))-($theight/2);

ImageTTFText($im, $size, $angle, $x, $y, $color, $font, $textstr);

header("Content-Type: image/png");
ImagePNG($im);

imagedestroy($im);


$db->query("INSERT INTO security_images (insertdate, referenceid, hiddentext) VALUES (now(), '".$referenceid."', '".$textstr."')");
$db->query("DELETE FROM security_images WHERE insertdate < date_sub(now(), interval 1 day)");

exit;

?>

 Bura belli kısımları açıklamak istiyorum. refıd değişkeni ile gösterilecek kodun şifrelenmiş halini alıyoruzç t değişkeni ile de kaç karakter göstereceğimizi belirliyoruz. Burda gördüğünüz gibi db değişkeni kullanım bunun için PHP ile Database İşlemleri dökümanına göz atmanız gerekmektedir. İhtiyacınız olan font ve resim dosylarını aşağıdaki linkten indirebilirsiniz.

Font and PNG Dosyaları için tıklayın

Daha sonra bu dosyamızı nasıl kullanacağımızı bir örnek ile görelim.

<?PHP
    $refid = md5(mktime()*rand());
    $check = TRUE;
    if(isset($_POST['submit']))
    {
        $secCheck = $db->query("SELECT ID FROM security_images WHERE referenceid = ".$db->check($_POST['security_refid'])." AND hiddentext= ".$db->check($_POST['security_try']));
        if(!$db->sql_num_rows()>0) $check = FALSE;
       
        if($check == TRUE) {
            // do what ever you want here
        }
    }
$refid = md5(mktime()*rand());
?>
<?PHP if($check == FALSE) echo "Lutfen guvenlik kodunu kontrol edin!"; ?>
<form action="index.PHP" method="post">
ID : <input type="text" name="id"><br>
Şifre : <input type="password" name="password"><br>
Kodumuz : <img src="securityimage.PHP?refid=<?PHP echo $refid; ?>" align="absmiddle"><br>
<input type="hidden" name="security_refid" value="<?PHP echo $refid; ?>">
Kodu Giriniz : <input name="security_try" type="text" id="security_try" size="10" maxlength="10"><br>
<input type="submit" name="submit" value="gönder">
</form>


Gördüğünüz gibi HTML img taginde securityimage.PHP dosyasına refıd değişkenini gönderiyoruz. Daha sonra yukarıda gördüğünüz gibi güven kodu kontolu yaparak istediğimiz işleme geçiyoruz.

 


PHP Güvenlik Kodu Kontrolu PHP Güvenlik Kodu Kontrolu PHP Güvenlik Kodu Kontrolu
PHP Güvenlik Kodu Kontrolu
YENI SORU
 
E-Mail Adresiniz
»
E-Mail adresiniz site icinde gosterilmeyecektir!  
   
 
Sorunuz
»
Lütfen kodlariniz için [CODE] belirtecini kullaniniz!  
  Add CODE Quote BOLD ITALIC Underline Align Left Align Center Align Right Add Line  
   
 
Güvenlik Kontrolü
»
Lütfen alttaki güvenlik kodunu giriniz!  
   
 
       
 
* Sorunun en kisa sürede cevaplanacaktir, muhtemelen 24 saat içinde!
PHP Güvenlik Kodu Kontrolu PHP Güvenlik Kodu Kontrolu PHP Güvenlik Kodu Kontrolu
PHP Güvenlik Kodu Kontrolu
 
Quaware Internet Solutions And Consulting - SEO Search Engine Optimization, Website development and design, eCommerce, Online Payment Systems, Shopping Cart, Affiliates Website Designer, Search Engine Optimization Expert, Ajax Developer,Developed And Designed By Mumin Celik With Using PHP, MySQL, CSS, JavaScript, Ajax And Search Engine Optimizer Sinema, Film, Ask, Tekgul, Mutluluk