我的表单中包含以下代码:
<div class="g-recaptcha" data-sitekey="MY_KEY"></div>
验证部分:
// Re captcha part
if (isset($_POST['g-recaptcha-response'])){
$captcha = $_POST['g-recaptcha-response'];
}
if (!$captcha) {
redirect('login', 'refresh');
}
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=MY_SECRET_KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
// t($response,1);
if($response."success" == false) {
redirect('login', 'refresh');
}
现在有点起作用,这是我的结果:
当我点击复选框时,我仍然需要输入要验证的文字。
我认为单击复选框就足够了?
我在这里做错了吗?
答案 0 :(得分:0)
reCaptcha 将首先通过分析您的鼠标移动(以及其他内容)验证您是否是机器人。
如果测试失败,它将弹出一个框,您需要在该框中写下图像中显示的2个单词。
这一切都很正常,但这只是客户端验证,如果您需要确保验证真正成功并且没有以某种方式被黑客攻击,或者其他......然后您提交将包含的表单 g-recaptcha-response 与您的方式类似,然后您将收到Google在该JSON字符串中的最终确认。
答案 1 :(得分:0)
以下是我检查“No Captcha”响应的方法,它总是向我显示“一键”验证框,即使在localhost中也是如此:
$g_recaptcha_response = filter_input(INPUT_POST, 'g-recaptcha-response');
if (isset($g_recaptcha_response)) {
$google = 'https://www.google.com/recaptcha/api/siteverify?secret='
. ZorAuthConfig::RC_SECRET_KEY
. '&response=' . $g_recaptcha_response;
$google_json = file_get_contents($google);
$google_data = json_decode($google_json);
// Check reCaptcha response.
if (!$google_data->success) {
// Do something if robot.
} else {
// Do something if human.
}
}
我是在最近写的小型图书馆中实现的,所以如果您想了解更多详细信息,可以查看它:https://github.com/zoran-petrovic-87/ZorAuth
http://zoran87.blogspot.com/2014/12/zorauth-10b-complete-flexible-no.html