谷歌没有验证码仍显示文字

时间:2014-12-14 19:18:18

标签: php recaptcha

我的表单中包含以下代码:

<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');
    }

现在有点起作用,这是我的结果: enter image description here

当我点击复选框时,我仍然需要输入要验证的文字。

我认为单击复选框就足够了?

我在这里做错了吗?

2 个答案:

答案 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