Turnstile, form gönderiminde ziyaretçi doğrulama token'ı üretir. Widget'ın ekranda görünmesi korumanın tamamlandığı anlamına gelmez; token sunucuda doğrulanmadan form işlenmemelidir.
1. Widget oluşturun
Cloudflare Turnstile bölümünde site ekleyin ve gerçek hostname'leri tanımlayın. Site key tarayıcıda kullanılabilir; secret key yalnız sunucuda saklanır. Test ortamında resmi test anahtarlarını kullanın; üretim secret'ını örnek koda yazmayın.
2. Formun içine yerleştirin
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<form method="post" action="/iletisim-gonder.php">
<label>E-posta <input type="email" name="email" required></label>
<div class="cf-turnstile" data-sitekey="SITE_KEY_BURAYA" data-action="contact"></div>
<button type="submit">Gönder</button>
</form>
Gerçek uygulamada CSRF alanı ve alan doğrulamaları da bulunmalıdır. cf-turnstile-response token'ı POST verisine eklenir. Widget'ı form dışında bırakmak veya JavaScript ile form verisini eksik toplamak token'ın gelmemesine neden olabilir.
3. Sunucu kontrolü
Sunucu secret ve token ile Siteverify API'ye POST yapar. Yalnız başarılı cevap, beklenen hostname ve gerekiyorsa action eşleşmesinde işleme devam edin. Eksik token, timeout veya API hatasında formu kabul etmeyin. Token kısa süreli ve tek kullanımlıdır; tekrar gönderimde yenilenmelidir.
4. Test senaryoları
Geçerli token ile başarılı gönderim; tokensız manuel POST ile ret; eski/tekrar token ile ret; doğrulama servisi erişilemezken ret bekleyin. Turnstile rate limit, CSRF ve giriş yetkilendirmesinin yerine geçmez. Tam PHP sunucu örneği için aynı merkezdeki “Turnstile PHP formuna nasıl eklenir” rehberini kullanın.
Bilgiyi uygulanabilir projeye dönüştürelim.
İhtiyacınızı teknik, operasyonel ve ticari açıdan değerlendirip doğru çözüm yol haritasını birlikte oluşturalım.
Projenizi Anlatın



