本文概述
- 使用回调
- 验证响应是否已经发送
- 验证服务器端
发生这种情况的原因是, 除非用户选中此表单字段(通过JavaScript由Google Recaptcha字符串附加在JavaScript后面), 否则始终为空(这意味着直到用户解决该问题才存在)。
【如何检查用户是否已经选中了Google Recaptcha复选框】为避免这种情况, 根据Google recaptcha api文档, 当最终用户解决reCAPTCHA时, 将在HTML中填充一个新字段(g-recaptcha-response)。
你可以通过以下三种方式之一验证用户的响应(其中两种是客户端):
使用回调向你的reCAPTCHA小部件添加一个新参数(数据回调):
<
div class="g-recaptcha" data-sitekey="your_site_key" data-callback="callback">
<
/div>
data回调参数期望要执行的函数的名称, 在先前的小部件中, 回调函数的名称为callback, 因此该函数应命名为callback:
function callback(){console.log("The user has already solved the captcha, now you can submit your form.");
}
验证响应是否已经发送检查grecaptcha响应结果:
if(grecaptcha.getResponse().length !== 0){console.log("The captcha has been already solved");
}
由于google recaptcha api.js文件已加载到文档中, 因此grecaptcha对象在窗口中可用。
验证服务器端如前所述, 如果用户未解析验证码, 则g-recaptcha-response字段值将为” ” (空), 因此, 只需使用你的服务器语言检查form字段是否为空。
使用PHP的示例(请注意, 根据你的表格, 方法可能与POST不同):
if($_POST["g-recaptcha-response"] != ''){// The user solved the recaptcha, now verify it if is a robot using the API.}
玩得开心
推荐阅读
- 如何使用Symfony 3中的免费GeoLite数据库从访问者的IP中检测城市,国家和地区
- 感悟|Java后端学习体系(韩顺平)
- Aria2怎样下载百度云?Aria2下载百度云运用图文详细教程
- 360压缩如何加密?360压缩加密办法列表
- 雷电安卓模拟器程序多开图文程图文详细教程
- DiskGenius怎样用?DiskGenius运用图文详细教程
- 搜狗输入法空格符号怎样打?搜狗输入法空格符号输入办法_搜狗输入法
- 百度输入法怎样打cf空格?百度输入法空格输入办法_百度输入法
- 推荐:微软官方Win10忍者猫主题包