reCAPTCHA Kullanımı
|reCAPTCHA Kullanımı sizi büyük bir dertten, spamdan kurtarır. Spam eskiden internet aleminin sabıkası en kabarık suçlusuydu. Fakat Google’ın geliştirdiği reCAPTCHA sistemi formlarınızda spamdan kurtulmamızı sağladı.
reCAPTCHA Nedir?
reCAPTCHA web sitenizde kullandığınız formları spamdan koruyan ücretsiz bir hizmettir. reCAPTCHA gelen kötü niyetli otomatik yazılım botlarını engellemek için google tarafından geliştirilmiştir.
reCAPTCHA Kurulumu
Google reCAPTCHA web sitenize kurup kullanmak için gereksinimler şunlardır. (PHP tabanlı siteler için)
Google reCAPTCHA site ekleme
İlk olarak Google hesabınızla reCAPTCHA‘ya giriş yapın. Giriş yaptıktan sonra spamdan korumak istediğiniz sitenizi kayıt edin. Bunun için aşağıdaki adımlar takip edin.
Label: Eklediğiniz siteleri hatırlamak için bir etiket
Domains: Kullanacağınız site adresleri, her satıra bir site girebilirsiniz. (Ben her site için yeni bir kayıt oluştururum)
Send alerts to owners: Bu seçeneği işaretleyin ki herhangi bir durum olursa size geribildirim gelsin. (bildirimler giriş yaptığınız Google hesabına gönderilir.)
Gerekli bilgileri girdikten sonra Register butonuna tıklayarak kaydı bitirin.
Kayıt işlemi tamamladıktan sonra kaydettiğiniz siteye tıklayın. Karşınıza şöyle bir ekran çıkacak.
Bu sayfayı bir kenarda açık tutun lazım oldukça burada verilen değerleri kullanacağız.
Google reCAPTCHA Api’si
<script src="https://www.google.com/recaptcha/api.js?hl=tr"></script>
Yukarıdaki api linkinde çağırılan js dosyasının sonunda “?hl=tr” koşulu kullanacağımız apinin türkçe olması belirtmemizi sağlar. Desteklenen tüm dillere buradan ulaşabilirsiniz. Bu kod ayrıca az önce kayıt yaptığımız sayfanın Step 1: client-side integration sekmesinde bulabilirsiniz. (İngilizce için “hl=tr” koşulunu kaldırıp dosyayı çağırmanız yeterlidir.)
Google reCAPTCHA için form elemanı
<div class="g-recaptcha" data-sitekey="== Site Key =="></div>
Bu form elemanını kafadan oluşturmuyoruz. Bu bilgiye az önce açıp bir kenara aldığımız sayfadan alacağız. Sayfadaki yeri Step 1: client-side integration sekmesindeki ikinci kod.
Google reCAPTCHA Html form içine yerleşimi
<html> <head> <title>Google reCAPTCHA Yorum Formu - omererkan.com</title> <script src='https://www.google.com/recaptcha/api.js?hl=tr'></script> </head> <body> <h1>Google reCAPTHA Yorum Formu</h1> <form id="yorum" action="" method="post"> <input type="email" placeholder="E-Postanız" size="40"><br><br> <textarea name="yorum" rows="8" cols="39"></textarea><br><br> <input type="submit" name="submit" value="Gönder"><br><br> <div class="g-recaptcha" data-sitekey="=== Site key ==="></div> </form> </body> </html>
Yukarıdaki Html formda 4. ve 12. satırlar reCAPTCHA çalışması için gerekli elemanlar.
Site Key Sitemizi kayıt ettikten sonra aldığımız anahtarı form içindeki data-sitekey alanına eklemeyi unutmayın.
Google reCAPTCHA PHP form kontrolü
Geldik son adıma şimdi hazırladığımız formu php ile kontrol ettirelim. Eğer koşullar doğruysa yani gerçek bir kullanıcı ise formu çalıştıracağız. Aksi durumda form hata verecek.
if (isset($_POST['email'])) { $email = $_POST['email']; } if (isset($_POST['yorum'])) { $email = $_POST['yorum']; } if (isset($_POST['g-recaptcha-response'])) { $captcha = $_POST['g-recaptcha-response']; } if (!$captcha) { echo '<h2>Lütfen robot olmadığınızı doğrulayın.</h2>'; exit; } $kontrol = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRET KEY&response=" . $captcha . "&remoteip=" . $_SERVER['REMOTE_ADDR']); if ($kontrol.success == false) { echo '<h2>Spam Gönderi!</h2>'; } else { echo '<h2>Bütün koşullar sağlandı. Form sorunsuz çalıştı.</h2>'; }
Yukarıdaki kod formdan aldığı veriyi $kontrol değişkeni ile reCAPTCHA’dadan gelen cevaba göre çalışır. $kontrol.success file_get_contents fonksiyonu ile istek yapılan json dosyasının bir elemanıdır sadece true ve false döndürür.
Yukarıdaki php kodundaki önemli kısım 14. satırdır. bu satırdaki SECRET KEY kısmına kendi anahtarınızı eklemeyi unutmayın.
Spamsız günler dileğiyle…
Edit: 19 Kasım 2018
reCAPTCHA Konusunda benimde yakından takip ettiğim Tayfun Erbilen bir video ile bu konuyu anlatmış. Güzel anlatımı ve basit bir fonksiyon ile işlemi oldukça basit hale getirmiş.
Bu recaptcha denilen olayı Google formsda oluşturduğumuz bir anket üzerinde uygulamamız mümkün müdür acaba?
Google Form sihirbazında recaptcha ekleme yok. Fakat recaptcha kullanmadan da spamın önüne geçebilirsiziniz. Formunuzun önüne sorular ekleyerek basit bir spam filtresi oluşturabilirsiniz. Mesela (yazı ile yazarak rakam kullanmayın) yirmi üç + on sekiz daha kaç eder? gibi, seçenekler x30 x45 x41 bu formun cevabına göre sayfa yönlendirmesi yapar doğru cevap verenleri asıl formunuza yönlendirebilirsiniz.
Örnek olması açısından http://goo.gl/forms/nK39CrZWd7 buradaki formu inceleyebilirsin.
hocam çok güzel açıklamışsın elinize sağlık..
benim sormak istedigim birşey var sitemde recaptcha kurulu yanlız eski sistem yeni sisteme geçirmek için ne yapmamlazım ?
sistemim php script cevabınız için şimdiden teşekkürler
Elinize sağlık, kolay bir kurulum için güzel bir anlatım olmuş.
Hocam merhaba bir sorunum var yardımcı olursanız sevinirim, az önce kendi sitem için reCAPTCHA eklentisini kurdum, lakin kendi sitemin admin paneline giriş yapamıyorum
kullanıcı adım ve şifrem doğru ama altta
site sahibinin görmesi gereken HATA : Geçersiz site anahtarı , hatası alıyorum her defasında
bi türlü yapamadık 🙁
teşekkürler, sade ve güzel anlatım
$kontrol değişkenini json decode işleminden sonra kontrol çalışcaktır.
$kontrol= json_decode($kontrol);
if ($kontrol->success == false) {
echo ‘Spam Gönderi!’;
} else {
echo ‘Bütün koşullar sağlandı. Form sorunsuz çalıştı.’;
}
Selam, Recaptcha görseli gelmediği halde bir sitede onay istiyor ne yapacağımı şaşırdım.
Aradığım birşeydi . Yararlı bir bilgi oldu .Teşekkür ederim .
Anlatım için teşekkürler işime yaradı.
Peki forumlarda
post attıktan , reCAPTCHA onayı aldıktan sonra
tekrardan robot olmadığını yani reCAPTCHA onayını istemsi hatasına karşı ne yapmak gerekir ?
teşekkürler
Bu durum ReCaptcha ilgili bir durum değil kullanıcı odaklı, Kullanıcı sabit ip kullanıyorsa çoğu zaman ReCaptha yı geçmek zorlaşıyor. Edindiğim tecrübe bu yönde.
Bunu nasıl yapacağımı kara kara düşünürken karşıma çıktın (:
Gerçekten çok işime yaradı.
Teşekkür ederim.
Teşekkürler Kardeşim. Emeğine sağlık
kral siteme recap ekledim ama anahtarı yanlıs gırdım sımdi siteme giremiyorum recap hata veriyor onu kaldırmak içinde siteye girmem gerek ne yapıcam
Ftp ile giriş yapıp ilgili dosyayı düzenlersen girebilirsin.
Hocam ben istediğim koularda RECAPTCHA kodu eklemek istiyorum. Konuya tıklandığında captcha çıkacak şekilde. Böyle bir şey mümkün mü?