1

Google reCaptcha V3 をフォームに追加しようとしています。それについて検索したところ、別の質問からいくつかの記事とコード スニペットが見つかりました。

チェックボックスのあるものではなく、ページの右下に表示されます。

HTMLコードは次のとおりです。

<script src='https://www.google.com/recaptcha/api.js?render=My Website Key'></script>
</head>

JS コード:

<body>

    <script>

        //When page is loaded
        $(document).ready(function() { 

             //When recaptcha is ready
             grecaptcha.ready(function() {

                 grecaptcha.execute('The Website Key', {action: 'homepage'}).then(function(token) {

                    //Add token element at the end of the form
                    $('#mailForm').prepend('<input type="hidden" name="token" value="' + token + '">');

                    //Add action element at the end of the form
                    $('#mailForm').prepend('<input type="hidden" name="action" value="homepage">');

                });

            }); //Recaptcha ready

        }); //Page is loaded

    </script>

フォーム:

<form action='php/mail.php' method="post" id='mailForm' enctype='multipart/form-data'>

    //Some inputs 

</form>

PHP コード:

if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {

    $secret = 'My Secret Key';

    //get verify response data
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);

    $responseData = json_decode($verifyResponse);

    if($responseData->success){
        //Send the mail
    }else{
        echo 'Please check reCaptcha';
    }
}else{
    echo 'Please check reCaptcha';
}

そのため、ページが読み込まれるとトークンが更新されます。そのため、ユーザーが何らかの理由で再試行すると、機能せず、エラー メッセージが表示されます。

ユーザーがフォームを送信したときにトークンを更新する必要がありますか? それともスパムにつながる可能性がありますか?または、この場合はどうすればよいですか?

4

0 に答える 0