我如何验证是否检查了谷歌新的recaptcha

时间:2015-01-24 19:07:05

标签: recaptcha

我现在正在尝试在我的网页中使用新的google recaptcha 。 在之前的recapthca 中,我通常使用此脚本来检查用户是否填写了recaptca挑战。

if (isset($_POST['cmdlogin'])){
    $resp = recaptcha_check_answer ($privatekey,$_SERVER['REMOTE_ADDR'],strip_tags($_POST['recaptcha_challenge_field']),strip_tags($_POST['recaptcha_response_field']));
    if (!$resp->is_valid) {// Bila captcha not true
        echo "<script>alert('Invalid! try again!');</script>";
        echo "<meta http-equiv='refresh' content='0; url=login.php'>";
        exit();
        }
....

然后,我找到了这个教程[http://codeforgeek.com/2014/12/google-recaptcha-tutorial/#comment-22729,但它并不能让我满意。

此外,当用户重新加载页面或时间结束时,会出现“之前的重新访问”,那么我应该如何处理呢?否则用户将重新加载页面以避免前一页。谢谢你的帮助。

3 个答案:

答案 0 :(得分:8)

html_element是我的空div的id。然后你可以将以下内容放在一个函数中并在提交时调用它:

var googleResponse = jQuery('#g-recaptcha-response').val();
if (!googleResponse) {
    $('<p style="color:red !important" class="error-captcha"><span class="glyphicon glyphicon-remove " ></span> Please fill up the captcha.</p>" ').insertAfter("#html_element");
    return false;
} else {
    return true;
}

答案 1 :(得分:2)

<强>已更新: 参考:https://github.com/google/ReCAPTCHA/tree/master/php 我认为这个问题现在已经解决了。我找到了这个链接,它给了我关于在php脚本中使用新的google recaptcha的完整教程。

<强> ISSUE: 当用户重新加载页面时,将出现旧的google recaptcha,我们不需要验证旧的,因为当用户键入正确的recaptcha时,“RESULT”将被发送到新的recaptcha。另一方面,验证的重点不是旧的,而是新的。当未知用户使用其他机器人攻击新机器时,会发生这种情况以防止垃圾邮件。通过出现旧的攻击,可以说攻击失败了。

if ($resp != null && $resp->success) {
    echo "<script>alert('SUCCESS Verifying Recaptcha!');</script>";
    echo "<meta http-equiv='refresh' content='0; url=login.php'>";
    exit();
    }

答案 2 :(得分:1)

要检查是否已选中 google recaptcha ,请执行以下 javascript 条件:

<script>
if(grecaptcha && grecaptcha.getResponse().length > 0)
{
     //the recaptcha is checked
     // Do what you want here
     alert('Well, recaptcha is checked !');
}
else
{
    //The recaptcha is not cheched
    //You can display an error message here
    alert('Oops, you have to check the recaptcha !');
}
</script>