Как сделать капчу "Я не Робот" от гугла. Краткая инструкция

Идете в гугл: https://www.google.com/recaptcha/admin и получаете две константы. В конфигурации прописываете две переменные:
// Ключ (Добавьте этот ключ в HTML-код сайта.)
define('reCAPTCHA_sitekey','6Lexxxx'); // если неопределена, то запрашиваться не будет
// Секретный ключ (Этот ключ нужен для связи между вашим сайтом и Google. Никому его не сообщайте)
define('reCAPTCHA_secretkey','6Lexxx'); // получить здесь https://www.google.com/recaptcha/admin

Сторона клиента. Форма ввода капчи

<?if(defined('reCAPTCHA_sitekey')){?>
    <script>
        var verifyGrecaptcha=undefined;
        var verifyCallback = function(response) {
            verifyGrecaptcha=response;
        };
    </script>
    <div class="g-recaptcha" data-sitekey="<?=reCAPTCHA_sitekey?>" data-callback="verifyCallback" data-expired-callback="verifyCallback"></div>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
<?}else{?>
    <script>
        var verifyGrecaptcha=1;
    </script>
<?}?>
при отправке формы проверяю:
if(verifyGrecaptcha==undefined){alert('Подтвердите, что Вы - не робот!');return false;}

Проверка на сервере правильности ввода капчи

Параметры и документация здесь:
  • https://developers.google.com/recaptcha/docs/verify
  • https://developers.google.com/recaptcha/docs/display#render_param
<?
list($headers,$body,$info)=ReadUrl::ReadWithHeader('https://www.google.com/recaptcha/api/siteverify',
    'secret='.reCAPTCHA_secretkey.
    '&response='.urlencode($_POST['g-recaptcha-response']).
    '&remoteip='.getenv('REMOTE_ADDR'),
    ['cache'=>0,'timeout'=>10]);
if($body){
    $recaptcha =json_decode($body,!0);
    if(!empty($recaptcha['success'])&&$recaptcha['success']){
        // Здесь все  отлично!!!
    }else{
        error("Неверная капча. Попробуйте ещё раз.");
    }
}else{
    SendAdminMail('Capcha error', "headers=".var_export($headers,!0)."\nbody= ".var_export($body,!0)."\ninfo=".var_export($info,!0));
    error("Не удалось проверить капчу. Попробуйте ещё раз.");
}
?>

.