我想将 reCaptcha 集成到一个网站中,但对它的工作原理有点困惑。
这是我的配置方式:
在头部添加了这段代码:
<script src='https://www.google.com/recaptcha/api.js?render=SITE_KEY></script>
在页面加载时使用此代码获取 reCaptcha 响应
<script>
grecaptcha.ready(function() {
grecaptcha.execute('SITE_KEY', {action: 'register'})
.then(function(token) {
jQuery('#recaptcha').val(token);
});
});
</script>
使用此代码验证验证码响应
$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 被用于垃圾邮件或任何其他谷歌验证检查失败)。但是用户是合法的,所以:
- 用户如何证明他的人性?(就像以前的复选框版本一样)
- 如果用户加载注册表并进行其他活动,则用户会在一段时间后(例如 10 分钟)回来。当用户尝试提交表单时,验证码检查将失败。(我试过这个并得到错误'超时或重复')
- 有没有办法重新加载验证码,而不需要重新加载页面?
请让我知道,如何克服这些问题?