我有一个包含多个字段的表单&验证码。单击提交按钮时,其中一个字段无效& recaptcha有效它提交表单但验证这些字段并在用户失败时向用户返回错误消息。
在此阶段,recaptcha仍然被检查&在前端验证。如果用户在具有错误消息的字段上修复了该问题并重新提交表单,则recaptcha的响应为false,因此未经过验证。
输入有效的电子邮件后,我明白了:
我检查验证码的功能是:
如果为false,则会导致上面屏幕截图中显示的错误消息。
答案 0 :(得分:2)
重新验证验证只有一次。
您有几种可能的方法:
grecaptcha.render
调用),如果表单提交失败,则要求他们再次填写验证码。 答案 1 :(得分:2)
来自官方docs:
如果您的网站使用AJAX请求执行服务器端验证, 您应该只验证用户的reCAPTCHA响应令牌 (g-recaptcha-response)一次。如果已使用a进行验证尝试 特别令牌,它不能再使用。你需要打电话 grecaptcha.reset()要求最终用户再次使用reCAPTCHA进行验证。
这意味着,您的verifyCaptcha()函数只能运行一次。将验证标志保存到会话变量中,只需检查它是否存在,并在每个后续请求中有效。