0

我想将 reCaptcha 集成到一个网站中,但对它的工作原理有点困惑。

这是我的配置方式:

  1. 在头部添加了这段代码:

    <script src='https://www.google.com/recaptcha/api.js?render=SITE_KEY></script>
    
  2. 在页面加载时使用此代码获取 reCaptcha 响应

<script>
grecaptcha.ready(function() {
grecaptcha.execute('SITE_KEY', {action: 'register'})
.then(function(token) {
  jQuery('#recaptcha').val(token);
});
});
</script>

  1. 使用此代码验证验证码响应

    $secret = 'SECRET_KEY';
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['recaptcha']);
    $responseData = json_decode($verifyResponse);
    if($responseData->success){
        //valid response, move forward
    }else{
        //captcha check failed, throw an error
    }
    

它似乎对我来说很好,我的请求得到了 0.9 分。

问题: 假设验证码因任何原因导致有效用户请求失败(例如 ip 被用于垃圾邮件或任何其他谷歌验证检查失败)。但是用户是合法的,所以:

  1. 用户如何证明他的人性?(就像以前的复选框版本一样)
  2. 如果用户加载注册表并进行其他活动,则用户会在一段时间后(例如 10 分钟)回来。当用户尝试提交表单时,验证码检查将失败。(我试过这个并得到错误'超时或重复')
  3. 有没有办法重新加载验证码,而不需要重新加载页面?

请让我知道,如何克服这些问题?

4

1 回答 1

0

将 reCAPTCHA V2 与 V3 添加。如果 V3 失败。使用 V2 验证用户。

于 2019-02-08T05:35:29.170 回答