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.
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">
CAPTCHABAŞ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.
Yorumlar
Bu yazı için hiç yorum yok. İlk yorumu yapmak ister misiniz?