PHP Projelerinde Google reCAPTCHA v2 Entegrasyonu ve Spam Koruması

15.03.2026
Burak Erol
63 Görüntülenme
PHP Projelerinde Google reCAPTCHA v2 Entegrasyonu ve Spam Koruması

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.