Проверка 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;
    }