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

Внедрение на сайт Google reCaptcha v3 на PHP
24 Октября 2023
php

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

  1. Зарегистрировать капчу, получить ключ и секретный ключ

  2. Вставить на страницу скрипт, замнив XXX на ключ

    <script src="https://www.google.com/recaptcha/api.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            var reCAPTCHA_site_key='XXX';
            function reCAPTCHA_execute () {
                grecaptcha.execute(reCAPTCHA_site_key, { action: 'contactForm' }).then(function (token) {
                    $('form').append(
                        $('<input type="hidden">').attr({
                            name: 'g-recaptcha-response',
                            value: token
                        })
                    );
                }, function (reason) {
                    console.log(reason);
                });
            }
            if (typeof grecaptcha !== 'undefined' && typeof reCAPTCHA_site_key !== 'undefined') {
                grecaptcha.ready(reCAPTCHA_execute);
                setInterval(reCAPTCHA_execute, 60000);
            }
        });
    </script>
    
  3. Проверка ключа осуществляется путем отправки на сайт google.com/recaptcha/api/siteverify, запроса, с GET переменными secret - секретный ключ, g-recaptcha-response - input генерируемый js и remoteip - IP сервера

    $response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YYY&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']), true);
    if($response['success'] == false){
        return false;
    }