我如何验证 google new recaptcha 是否被选中

How could I verify if google new recaptcha is checked

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

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,但并不令我满意。

此外,当用户重新加载页面或超时时,会出现"previous recaptcha",那么我应该如何处理呢?否则用户将重新加载页面以避免上一个。感谢您的帮助。

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

问题: 当用户重新加载页面时,会出现一个旧的 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();
    }

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

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

检查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>