ReCAPTCHA v3 вопрос проблема - PullRequest
       41

ReCAPTCHA v3 вопрос проблема

0 голосов
/ 26 октября 2019

Поскольку я пытаюсь кодировать веб-сайт с помощью контактной формы, я хотел бы добавить reCAPTCHA v3 - но у меня есть некоторые проблемы ... Я следовал этому руководству: Ссылка на учебник

Если быть более точным, я перечитал другие учебники, но подумал, что этот был наиболее простым для понимания.

Прежде всего я создал несколько идентификаторов в своей учетной записи Google в качестве локального хоста и получил несколько ключей - далее они обозначаются как XXXXXXXXXXX.

На странице моего сайта определены переменные php и метод отправки почты, а затем вся HTML-часть. Я попытался максимально упростить его.

Вот код:

<?php 
    define('SITE_KEY', 'XXXXXXXXXXX');    
    define('SECRET_KEY', 'XXXXXXXXXXX');

    if ($_SERVER['REQUEST_METHOD'] === 'POST' AND isset($_POST['recaptcha_response'])) 
    {         
        $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
        $recaptcha_secret = SECRET_KEY;
        $recaptcha_response = $_POST['recaptcha_response'];
        $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
        $recaptcha = json_decode($recaptcha);
        if ($recaptcha->score >= 0.5)
        {  
            if (isset($_POST['send_message']))
            {
                include("mail_contact.php");   //method to send email
            }
        }
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="Pages/style.css" />
        <title>Contact page</title>
        <script src='https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY; ?>'></script>
        <script>
            grecaptcha.ready(function()
            {
                grecaptcha.execute(<?php echo SITE_KEY; ?>, {action: 'send_message'}).then(function(token)
                {
                    document.getElementById('recaptchaResponse').value = token;
                });
            });
        </script>
    </head>
    <body class="preload">
            <header>
                <?php include("Pages/header.php"); ?>
            </header>

            <section>
                        <form method="post" action="">
                            <div class="grille">
                                <div class="demibox">
                                    <label for="last_name">Nom :</label>
                                    <input type="text" name="last_name" id="last_name" maxlength="20" required />
                                </div>
                                <div class="demibox">
                                    <label class="label_name" for="first_name">Prenom :</label>
                                    <input type="text" name="first_name" id="first_name" maxlength="20" required />
                                </div>
                            </div>
                            <div class="grille">
                                <label for="email">E-mail :</label>
                                <input type="email" name="email" id="email" maxlength="55" required />
                            </div>
                            <div class="grille_message">
                                <textarea name="message" id="message" required ></textarea> 
                            </div>
                            <button name="send_message">
                                <span>Envoyer</span>
                            </button>
                            <input type="hidden" name="recaptcha_response" id="recaptchaResponse">
                        </form>
            </section>

            <footer>
                <?php include("Pages/footer.php"); ?>
            </footer>
        </div>
    </body>
</html>

Но когда я использую кнопку «Отправить», выдается следующая ошибка:

Примечание: неопределенное свойство: stdClass :: $ score в /Applications/MAMP/htdocs/Website/main.php в строке 13

Я понимаю ошибку, но не знаю какчтобы исправить это ..

У кого-нибудь есть решение, пожалуйста?

Спасибо за вашу помощь:)

Джерри

...