dongtaihui5131 2019-06-18 08:53
浏览 83

更新Google reCaptcha V3令牌

I'm trying to add Google reCaptcha V3 to a form, I searched about it and found some articles and some code snippets from another question.

It's not the one with a checkbox, It shows at the bottom right or the page.

Here is the HTML code:

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

The JS code:

<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>

The form:

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

    //Some inputs 

</form>

The PHP code:

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';
}

So the token is updated when the page is loaded, So if the user tries again for any reason, It won't work and he would get an error message.

So should I update the token when the user submits the form? Or that may lead to spam? Or what should I do in this case?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错
    • ¥15 单片机学习顺序问题!!
    • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
    • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)