- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Sadece PHP ile form yapmak artık yeterli değil. Botlar saniyeler içinde binlerce spam e-posta gönderebilir. Google reCAPTCHA kullanarak formunuzu gerçek kullanıcılarla sınırlayacağız.
Başlamadan önce Google reCAPTCHA Admin paneline giderek sitenizi kaydetmeniz ve şu iki anahtarı almanız gerekir:
Formumuza Google'ın JavaScript kütüphanesini ve reCAPTCHA kutucuğunu ekliyoruz.
Bu aşamada, kullanıcının reCAPTCHA'yı geçip geçmediğini Google sunucularına sorarak doğruluyoruz.
reCAPTCHA entegrasyonu, formunuzu "çöp" mesajlardan temizlemenin en profesyonel yoludur. PHP tarafında sadece success değerini kontrol etmek yeterlidir. Eğer çok yüksek trafikli bir siteniz varsa, file_get_contents yerine daha performanslı olan cURL yöntemini tercih etmelisiniz.
1. Google'dan Anahtarları Almak
Başlamadan önce Google reCAPTCHA Admin paneline giderek sitenizi kaydetmeniz ve şu iki anahtarı almanız gerekir:
[] Site Anahtarı (Site Key): HTML formunda görünür.
[] Gizli Anahtar (Secret Key): PHP tarafında doğrulama için kullanılır.
2. HTML Formu (index.php)
Formumuza Google'ın JavaScript kütüphanesini ve reCAPTCHA kutucuğunu ekliyoruz.
HTML:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Güvenli İletişim Formu</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="gonder.php" method="POST">
<input type="text" name="ad" placeholder="Adınız" required>
<input type="email" name="email" placeholder="E-Posta Adresiniz" required>
<textarea name="mesaj" placeholder="Mesajınız"></textarea>
<div class="g-recaptcha" data-sitekey="BURAYA_SITE_ANAHTARINIZI_YAZIN"></div><br>
<button type="submit">Gönder</button>
</form>
</body>
</html>
3. PHP Doğrulama ve Gönderim (gonder.php)
Bu aşamada, kullanıcının reCAPTCHA'yı geçip geçmediğini Google sunucularına sorarak doğruluyoruz.
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$secretKey = "BURAYA_GIZLI_ANAHTARINIZI_YAZIN";
$captchaResponse = $_POST['g-recaptcha-response'];
// Google API'ye istek gönderiyoruz
$sorgu = file_get_contents("[https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$captchaResponse](https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$captchaResponse)");
$sonuc = json_decode($sorgu);
if ($sonuc->success) {
// reCAPTCHA doğrulaması başarılı!
$ad = htmlspecialchars($_POST['ad']);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$mesaj = htmlspecialchars($_POST['mesaj']);
// Burada PHPMailer ile gönderim yapabilirsiniz
echo "Teşekkürler $ad, mesajınız bot kontrolünden geçti ve alındı.";
} else {
// Doğrulama başarısız
echo "Lütfen robot olmadığınızı doğrulayın!";
}
}
?>
Güvenlik ve Performans İpuçları
| Özellik | Neden Gerekli? |
|---|---|
| file_get_contents | Google sunucusuyla hızlı iletişim kurmak için (veya cURL kullanılabilir). |
| htmlspecialchars | XSS saldırılarını önlemek için form verilerini temizler. |
| v3 Alternatifi | Kullanıcıya kutucuk göstermeden arka planda puanlama yapar. |
Sonuç
reCAPTCHA entegrasyonu, formunuzu "çöp" mesajlardan temizlemenin en profesyonel yoludur. PHP tarafında sadece success değerini kontrol etmek yeterlidir. Eğer çok yüksek trafikli bir siteniz varsa, file_get_contents yerine daha performanslı olan cURL yöntemini tercih etmelisiniz.