PHP Projelerinde Google reCAPTCHA v2 Entegrasyonu ve Spam Koruması
Web sitenizdeki iletişim formları, yorum alanları veya üyelik sayfaları spam botların bir numaralı hedefidir. Her gün e-posta kutunuza düşen anlamsız bot mesajlarını engellemenin ve sunucu kaynaklarınızı korumanın en etkili yollarından biri Google reCAPTCHA kullanmaktır.
Google reCAPTCHA Nasıl Çalışır?
Sistem temelde iki anahtarla çalışır: Site Key (Site Anahtarı) ve Secret Key (Gizli Anahtar). Site anahtarı, kullanıcının tarayıcısında (frontend) widget'ı göstermek için kullanılırken; gizli anahtar, kullanıcının gönderdiği doğrulama kodunu Google sunucularında (backend) teyit etmek için kullanılır.
Adım 1: Frontend (HTML/JS) Entegrasyonu
Öncelikle sayfamızın <head> etiketleri arasına reCAPTCHA API scriptini eklemeliyiz. Ardından formumuzun içine (genellikle submit butonundan hemen önce) widget'ı çağıracağımız div etiketini yerleştiriyoruz.
<!-- Head Kısmına eklenecek --> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <!-- Formun içine eklenecek --> <div class="g-recaptcha" data-sitekey="SİZİN_SITE_ANAHTARINIZ"></div>
Adım 2: Backend (PHP) Doğrulaması
Kullanıcı formu gönderdiğinde, POST verileri arasında g-recaptcha-response adında özel bir değişken de gelir. Bu değişkeni, kendi Gizli Anahtarımızla birlikte Google API'sine göndererek "Bu kullanıcı gerçekten doğrulama yaptı mı?" diye sormamız gerekir.
$recaptcha_response = $_POST['g-recaptcha-response'];
// Boş gönderilmiş mi kontrolü
if (empty($recaptcha_response)) {
die("Lütfen robot olmadığınızı doğrulayın.");
}
$secretKey = "SİZİN_GİZLİ_ANAHTARINIZ";
$ip = $_SERVER['REMOTE_ADDR'];
// Google API'sine doğrulama isteği atıyoruz
$url = "https://www.google.com/recaptcha/api/siteverify?secret={$secretKey}&response={$recaptcha_response}&remoteip={$ip}";
$verifyResponse = file_get_contents($url);
$responseData = json_decode($verifyResponse);
if ($responseData->success) {
// Doğrulama Başarılı! Veritabanı veya mail işlemlerini burada yapın.
echo "Doğrulama başarılı, mesajınız alındı.";
} else {
// Doğrulama Başarısız!
echo "Spam tespiti. Lütfen sayfayı yenileyip tekrar deneyin.";
}
Sonuç
reCAPTCHA entegrasyonu, projelerinizi spam botlarından korumak için uygulayabileceğiniz en maliyetsiz ve etkili yöntemdir. Özellikle PHP projelerinde file_get_contents veya cURL kullanarak Google API'sine bağlanmak sadece birkaç satır kod gerektirir.