kişisel düşünceler, üstüne bir de teknoloji..

Google reCaptcha Yeni Sürümünün Php İle Kullanımı

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.

Hero reCaptcha Demo

Canlı DemoKodları İndir

İ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.

Google reCaptcha 1

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 Site Key

Google Secret Key

Doğrulama işlemi için sitenin Google ile iletişim kurmasında kullanılacak.

Google Secret Key

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ı.

Google reCaptcha Form

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;
}
?>

Canlı DemoKodları İndir

Tüm işlemler bu kadar. Umarım faydalı bir yazı olmuştur.

10 Comments

  1. Sinan Gökmen

    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

    • Ahmet İşcan

      Olabildiğince temel düzeyde anlatmaya çalıştım şuan için daha basit anlatma imkanım yok maalesef.

    • İsimsiz

      Eğer tecrüben yoksa Google kullanım kılavuzunu oku bin kere şükredersin 😀

  2. Metin Ağaoğlu

    Emeğinize sağlık ahmet bey

  3. Savaş

    aynı sayfada birden fazla kullanmak istersek ne yapmamız gerekir.

  4. ömer

    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.

  5. alperen

    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

    • Ahmet İşcan

      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.

  6. sinan

    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

    • Ahmet İşcan

      Teşekkürler. Eski sürümün çalışma şekliyle ilgili çok bilgim yok. O yüzden yardımcı olamayacağım maalesef.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir