Bugüne kadar irili ufaklı birçok sitede Google reCaptcha kullanıldığını görmüştüm. Botları uzak tutmakta diğer doğrulama yöntemlerine göre daha başarılıydı. Ama her geçen gün okunabilirliği azalıyordu. Yine de Google reCaptcha servisini seviyordum. Çünkü Google bu servis sayesinde eski kitapları dijitalleştiriyordu.
Geçtiğimiz günlerde Google reCaptcha’nın yeni sürümünün yayınlandığına dair bir haber gördüm. İncelediğimde yeni kullanım çok hoşuma gitti ve hemen denedim. Sonrasında da blogumda bununla ilgili bir yazı yazmaya karar verdim.
Aşağıdaki demo görsel sistemin nasıl çalıştığıyla ilgili fikir sahibi olmanıza yardımcı olacaktır.
İsterseniz yavaştan sistemin kullanımını incelemeye başlayalım. Öncelikle buraya tıklayarak Google reCaptcha servisine erişim sağlamalısınız. Sonrasında Get reCaptcha linkine tıklayarak sisteme giriş yapıyorsunuz.
Sonrasında yukarıdaki resimde olduğu gibi sitenizin kaydını oluşturuyorsunuz. Böylece sitenize özel Site key ve Secret key değerlerini alabileceksiniz.
Google Site Key
Formunuzu oluşturduğunuz html içerisinde lazım olacak.
Google Secret Key
Doğrulama işlemi için sitenin Google ile iletişim kurmasında kullanılacak.
Bu yazıda örnek olarak bir iletişim formunda Google reCaptcha kullanımını göstereceğim. Siz ihtiyacınıza göre kodları güncelleyebilirsiniz.
İlk olarak aşağıdaki kodları kullanarak bir iletişim formu oluşturmalısınız.
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Google Yeni reCaptcha</title> <link rel="stylesheet" href="css/style.css"/> <!-- reCaptha için gerekli js --> <script src='https://www.google.com/recaptcha/api.js'></script> <style> .durum{ color: red; } </style> </head> <body> <div id="main"> <h3>Google Yeni reCaptcha</h3> <form action="" method="post"> <label>Adınız</label> <input type="text" name="ad" /><br /> <label>Soyadınız </label><input type="text" name="soyad" /><br /> <label>Mesajınız </label><textarea name="mesaj"></textarea><br /> <br/><br/> <div class="g-recaptcha" data-sitekey="Google Site Key"></div> <br/> <input type="submit" value="Gönder" /> <span class="durum"><?php echo $durum; ?></span> </form> </div> </body> </html>
Yukarıdaki kodları yazdığınızda aşağıdaki resimde gördüğünüz gibi kendi formunuzu görüyor olmalısınız. Site key değerinde bir hata yoksa Google reCaptcha da görünüyor olmalı.
index.php İçeriği
<?php session_start(); $durum = ''; if ($_SERVER["REQUEST_METHOD"] == "POST") { $recaptcha = $_POST['g-recaptcha-response']; if (!empty($recaptcha)) { include "curl.php"; $google_url = "https://www.google.com/recaptcha/api/siteverify"; $secret = 'Google Secret Key'; //kullanıcının ip adresi $ip = $_SERVER['REMOTE_ADDR']; //istek adresini oluşturuyoruz $url = $google_url . "?secret=" . $secret . "&response=" . $recaptcha . "&remoteip=" . $ip; $res = curlKullan($url); $res = json_decode($res, true); //işlem başarılıysa çalışacak kısım if ($res['success']) { //örnek olduğu için güvenlik kontrolü yapmıyorum. Normalde zararlı kodları süzmelisiniz. $ad = $_POST['ad']; $soyad = $_POST['soyad']; $mesaj = $_POST['mesaj']; if (!empty($ad) && !empty($soyad) && !empty($mesaj)) { //mail gönderimini sağlayacak kodlar } else { $durum = "Lütfen formdaki tüm alanları doldurun."; } } else { $durum = "Lütfen bot olmadığınızı doğrulayın."; } } else { $durum = "Lütfen bot olmadığınızı doğrulayın."; } } ?>
E-posta gönderim kısmında yazacağınız kodlar hakkında fikriniz yoksa PHPMailer Sınıfı İle SMTP’den Mail Gönderme başlıklı yazımı okumanızı öneririm.
curl.php İçeriği
Bu dosyada yer alan fonksiyon yardımıyla Google reCaptha doğrulamasını yapacağız. Bunun için php_curl eklentisi etkin olmalı.
<?php function curlKullan($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16"); $curlData = curl_exec($curl); curl_close($curl); return $curlData; } ?>
Tüm işlemler bu kadar. Umarım faydalı bir yazı olmuştur.
merhaba, anlatımınız için teşekkürler. Fakat bu konularda çok fazla tecrübesi olmayan biri olarak bir türlü olayı kavrayamadım. Var olan iletişim formuma nasıl ekleyeceğim bir türlü yapamadım. daha basit bir dille nasıl anlatılabilir acaba
Olabildiğince temel düzeyde anlatmaya çalıştım şuan için daha basit anlatma imkanım yok maalesef.
Eğer tecrüben yoksa Google kullanım kılavuzunu oku bin kere şükredersin 😀
Emeğinize sağlık ahmet bey
aynı sayfada birden fazla kullanmak istersek ne yapmamız gerekir.
Merhaba yazı güzel olmuş. Emeğinize sağlık. Ancak sormak istediğim bir şey var. Ben robot değilim yazısı bende ingilizce görünüyor bunu nasıl Türkçe ayarlayabiliriz.
kodları indir linki çalımıyor acaba tekrar yükleyebilir misiniz? ben smtp kısmını yapamadım bi türlü, dosyalar olsaydı örnek olarak iyi olurdu…teşekkürler
Demo adresimde bir problem oluşmuş farkına varmadım. Bilgilendirdiğiniz için teşekkürler, en kısa zamanda tekrar yayına almaya çalışacağım.
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
Teşekkürler. Eski sürümün çalışma şekliyle ilgili çok bilgim yok. O yüzden yardımcı olamayacağım maalesef.