PHP CAPTCHA güvenlik kodu oluşturma ve kullanımı

makale.baslik

CAPTCHA : İnsanları makine girdisinden ayırmayı amaçlayan bir program veya sistem, tipik olarak istenmeyen postaları ve web sitelerinden otomatik veri alınmasını engellemenin bir yolu olarak kullanılır.

Web sitenizdeki formlara botların gereksiz veri girişini engellemek için kullanabileceğiniz basit bir güvenlik aracı olan CAPTCHA uygulamasını sizlerle paylaşıyorum. Bu sayede veritabanınız veya form doğrudan mail atıyorsa mail hesabınız gereksiz verilerle dolmaz. Size de gerçek kullanıcıların girdiği veriler gelir. 

 

CAPTCHA kullanımını gösterdiğim video:

 

Sistem çok basit arka tarafta grafik oluşturulup session'da da bunun metin karşılığını tutuyoruz. Kullanıcının girdiği ile session daki veri aynı ise sistem onay veriyor ve işleme devam edebiliyor. 

captcha

Sizlerde isteğinize göre geliştirip kullanabilirsiniz. 

ilk dosyamız CAPTCHA yı oluşturup session ortamına aktarıyor.

captcha.php 

<?PHP

$image = @imagecreatetruecolor(120, 30) or die("hata oluştu");

// arkaplan rengi oluşturuyoruz
$background = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
imagefill($image, 0, 0, $background);
$linecolor = imagecolorallocate($image, 0xCC, 0xCC, 0xCC);
$textcolor = imagecolorallocate($image, 0x33, 0x33, 0x33);

// rast gele çizgiler oluşturuyoruz
for ($i = 0; $i < 6; $i++) {
    imagesetthickness($image, rand(1, 3));
    imageline($image, 0, rand(0, 30), 120, rand(0, 30), $linecolor);
}

session_start();

// rastgele sayılar oluşturuyoruz
$sayilar = '';
for ($x = 15; $x <= 95; $x += 20) {
    $sayilar .= ($sayi = rand(0, 9));
    imagechar($image, rand(3, 5), $x, rand(2, 14), $sayi, $textcolor);
}

// sayıları session aktarıyoruz
$_SESSION['captcha'] = $sayilar;

// resim gösteriliyor ve sonrasında siliniyor
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

İkinci dosyamız test.php ile güvenlik kodunu karşılaştırıyoruz.

<!doctype html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>CAPTCHA</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
    </style>

</head>
<body>

<br>

<strong>
    Robot olmadığınızı kanıtlamak için görseldeki metni yazın
</strong>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <div style='margin:15px'>
        <img src="captcha.php" id="capt">
        <input type=button onClick=reload(); value='Tekrar Yükle'>
    </div>


    <input type="text" name="deger"/>
    <input type="submit" value="Giriş" name="submit"/>
</form>

<div style='margin-top:5px'>
    <?php

    session_start();
    // Kullanıcı bir captcha verdiyse!
    if (isset($_POST['deger']))

        // Captcha geçerliyse
        if ($_POST['deger'] == $_SESSION['captcha'])
            echo '<span style="color:green">BAŞARILI</span>';
        else
            echo '<span style="color:red">CAPTCHA BAŞARISIZ!!!</span>';
    ?>
</div>


<script type="text/javascript">
    function reload() {
        img = document.getElementById("capt");
        img.src = "captcha.php"
    }
</script>

</body>
</html>

Uygulama dosyasını indirmek için: CAPTCHA.zip

Çalışmanın demo uygulaması için tıklayın.

Paylaş:

Yorumlar

    Bu yazı için hiç yorum yok. İlk yorumu yapmak ister misiniz?