Проверка Google reCaptcha на PHP

26 Января 2018
php

Чтобы внедрить Google reCaptcha(капчу) на сайт необходимо:

  1. Зарегистрировать капчу, получить КЛЮЧ и СЕКРЕТНЫЙ КЛЮЧ
  2. Вставить на страницу скрипт и блок с капчей

    <script charset="utf-8" src='https://www.google.com/recaptcha/api.js'></script>
    <div class="g-recaptcha" data-sitekey="СЮДА ВСТАВИТЬ КЛЮЧ"></div>
    
  3. Проверка ключа осуществляется путем отправки на сайт google.com/recaptcha/api/siteverify, запроса, с GET переменными secret - СЕКРЕТНЫЙ КЛЮЧ, response - СТРОКА ИЗ ФОРМЫ с классом g-recaptcha и remoteip - IP

    В ответ получаем JSON массив данных

    Пример реализации проверки капчи на PHP:

    // подготовка переменных
    $secret     ='СЮДА ВСТАВИТЬ СЕКРЕТНЫЙ КЛЮЧ';
    $ip         =$_SERVER['REMOTE_ADDR'];
    $recaptcha  =$_POST['g-recaptcha-response'];
    $google_url ="https://www.google.com/recaptcha/api/siteverify";
    $url        =$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
    
    // отпарвка и получаение ответа
    $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);
    $res        =json_decode($curlData, true);
    
    // проверка
    if($res['success']){
    	// успешно
    }