Проверка 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']){ 
    	// успешно
    }