Öncelikle re-captcha kullanıyor ve php ile captcha oluşturma işlemleri yapmıyorsanız konuyu pas geçebilirsiniz veya yanlış bildiğiniz konu varsa öğrenebilirsiniz konuyu re-captcha kullanmadığımızı varsayarak anlatıyorum.

Sıkça yapılan hata - 1

Kaynakta gösterilen captchalar oluşturmayın. Kaynak üzerinden botlar okuma yapabilir ve aldığı veriye göre doğrulamayı geçebilir.

Örnek Hatalı Kullanım : 2+2 = ?

Sıkça yapılan hata - 2

HTML form içerisinde, php tabanlı resim üzerinde text oluşturmak ve bunu sadece resim olarak ekrana bastırmak;

Buradaki işlemde kullanıcı siteye girdiğinde sadece resimi görmesi durumunda captcha oluşturulur.

Buraya kadar bir problem yok ancak, resimi bir defa oluşturduktan sonra kaydedeceği cookie bilgisi ile tekrardan doğrulamayı geçebilir.

Yani bot aracılığı ile sadece backend tarafına işlem yapılacağından captcha'nın yenilenmesi gerçekleşmez çünkü resim çağırılmayacaktır.

ÇÖZÜM:

Aşağıdaki adımları izleyerek daha güvenli bir captcha sistemi yapabilirsiniz.

Olması gereken kodlama adımları class ve method adları örnek olarak verilmiştir fonksiyonları kendiniz oluşturabilirsiniz sadece olması gereken adımları belirttim.

FORM SAYFASI

<?php
if($_POST)
{
	if($_POST['captcha']=='')
	{
		echo 'Güvenlik Kodu Hatalı!';
	}
	else
	{
		if($_POST['captcha']==$_SESSION['captcha'])
		{
			echo 'Merhaba '.$_POST['ornek'];
		}
		else
		{
			echo 'Güvenlik Kodu Hatalı!';
		}
	}
}
$captcha = new captcha();
$captcha->create_captcha(); // kullanıcıya captcha atandı
?>

<form action="" method="post">
	<input type="text" name="ornek" placeholder="İsminiz">
	<br/>
	<img src="captcha.php">
	<br/>
	<input type="text" name="captcha" placeholder="Ne görüyorsun yaz bana ?">
	<br/>
	<input type="submit" value="Gönder">
</form>
CAPTCHA.PHP

<?php
	// session verisini alarak bununla resmi oluşturun.
?>