PHP ile Google ReCaptcha Yapımı

Merhabalar,

Yazdığım bir sistem de captcha kullanmam gerekiyordu. Birde ne göreyim?  Google reCaptcha çıkarmış.(!) Hemen inceledim ve piyasadaki captcha sistemlerinin gayet üstünde bir captcha sistemi olmuş.

Tamam tamam da ne farkı var diğer captcha sistemlerinden? diye soracak olursanız şöyle ki;

Diğer captcha sistemlerinde arkaplanı saçma ve yazı şekilleri bozuk fontlarla belli karakterler gösteriliyordu bunu okumak için kırk takla attığımız zaman da oluyordu, rahat görebildiğimiz zamanda.

Fakat Google captcha sisteminde sadece bir tik işaretliyorsunuz ve robot olup olmadığınızı kontrol ediyor eğer aynı sitede belli bir sayıdan sonra bu işlemi yaparsanız size muz, meyve, makarna, dağ, şelale, çorba bla bla bla resimleri gösteriyor ve bunların arasından istediği resim ya da resimleri seçmenizi istiyor. Bence gayet kullanışlı olmuş diğer captcha’lara göre.

Bunun hakkında bir video dersi çektim;

Şimdi ben videoyu izleyemem buradan bakayım merak ettim derseniz de anlatmaya başlıyorum.

  • google.com/recaptcha adresine bağlanın.
  • Sağ üstte bulunan Get reCaptcha bağlantısına tıklayın.

Tıkladığınızda eğer giriş yapmışsanız size şöyle  bir sayfa dönmesi gerekiyor.

PHP ile Google ReCaptcha Yapımı Site Kaydetme Sayfası

PHP ile Google ReCaptcha Yapımı Site Kaydetme Sayfası

Label:  Buraya oluşturacağınız captcha’yı hangi site için hazırladığınızı hatırlamak için başlığınızı girin.

Domains: Buraya ise kullanacağınız internet adresini iç adres olmadan yani ana dizin adresinizi girin site.com şeklinde(Localhost için ise localhost ya da 127.0.0.1 kullanmanız gerekiyor).

Owners: Bu kısmada sizin eposta adresiniz olabilir uygulama sahibini istiyor kısacası.

Bunları yapıp kaydettikten sonra bize bir sayfa dönmesi gerekiyor ve orada sitekey, secret key gözüküyor.

Standart html yapınızın olduğunu varsayarsak.Script dökümanlarınızı çektiğiniz yere;

<script src='https://www.google.com/recaptcha/api.js'></script>

Dosyasını çekmeniz gerekiyor. Bu arada ben bu dosyaya biraz baktım bu dosyanın asıl işi bizim lokasyonumuzu belirleyerek ona göre js dosyasını çağırması (yani Ben robot değilim mi yoksa I’m not a robot mu yazıcak onun ayrımı için). Evet şimdi gelelim html ve php kısmına. Form elementinizin olduğu kısma bir yer açmak gerekiyor ve gereken kod parçacığı şu şekilde;


<div class="g-recaptcha" data-sitekey="SITEKEY KODUNUZ"></div>

Artık sizde şu görünüme kavuşmuş oldunuz;

Google Recaptcha Görünümü

Google Recaptcha Görünümü

 

 

 

Şimdi formu post ettiğimiz kısıma gelmeden önce bir cURL fonksiyonu oluşturmamız gerekecek.

Bu curl fonksiyonu’da şu şekilde;

 

 function conn($url){

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 $ret = curl_exec($ch);
 curl_close($ch);
 return $ret;

 }

Şimdi ise curl dosyanızı index dosyanızda çağırdığınızı tahmin ederek diğer kısıma geçelim.

İlk olarak bu divden gelen değeri nasıl alacağız?

Diğer bir kısım bir IP Adresinden veri çekicek bunu nasıl bulacağız?

Diğer bir olay Secret Key’imiz.

Bunların cevapları aşağıda.

 

 $sec = "SECRET KEY ADRESINIZ";
 $ip = $_SERVER['remote_addr'];
 $response = $_POST['g-recaptcha-response'];

Şimdi bunları aldık peki nereye bağlanacağız?

$url="https://www.google.com/recaptcha/api/siteverify?secret=secret_keyiniz&amp;response=formdan _gelen_cevap&amp;remoteip=donen_ip_adresi";

Şimdi bu kodu kendi değişken isimlerimize göre şu şekilde düzenleyebiliriz.

$url ="https://www.google.com/recaptcha/api/siteverify?secret=".$sec."&amp;response=".$response."&amp;remoteip=".$ip."";

Artık gereken şey bu adrese bağlanmamız ve dönen değerleri incelememiz.

Bu adrese bağlanıp değerleri incelerken şöyle bir bakalım nasıl yapacağımıza.

 


$cnn = conn($url);
print_r($cnn);

Dediğimizde bir json dönücek eğer sıkıntımız yoksa;

 

 {

"success": true

} 

Bu değeri gördüysek hiç bir sıkıntımız yok demektir artık bu değeri json_decode ile json formatından kurtaralım.

 

$js = json_decode($cnn);

Şimdi kurtarmış olduk artık $js[‘success’] olarak değerimize erişebiliriz.

DemoDosyaları İndir

Umarım ki yararlı olmuştur. Haydi kolay gelsin

 

 

Bir Cevap Yazın