Recaptcha v2无法验证-PHP

问题描述 投票:0回答:1

我正在尝试在我的PHP应用程序注册表格中验证google recaptcha V2。但是它没有得到验证。它给出成功消息,并重定向到登录页面。有人可以帮我这个忙吗? HTML如下:

<div class="captcha_wrapper">
        <div class="g-recaptcha" data-sitekey="KEY"></div>
</div>

AJAX如下:

 <script>
        $(document).ready(function() {

        jQuery.validator.addMethod("noSpace", function(value, element) { 
     return value.indexOf(" ") < 0 && value != ""; 
  }, "Spaces are not allowed");

            $("#register_form").submit(function() {

                $("#register_form").validate({
                    rules: {
                        firstname: {
                            required: true
                        },
                        lastname: {
                            required: true
                        },
                        email: {
                            required: true,
                            email: true
                        },
                        username: {
                            required: true,
                            noSpace: true
                        },
                        password: {
                            required: true,
                            minlength: 6
                        },
                        retype_password: {
                            required: true,
                            equalTo: "#inputPassword"
                        },
                    },
                    messages: {
                        firstname: {
                            required: "Enter Firstname<br />",
                        },
                        lastname: {
                            required: "Enter Lastname<br />",
                        },
                        email: {
                            required: "Enter your email address",
                            email: "Enter valid email address"
                        },
                        username: {
                            required: "Enter Username<br />",

                        },
                        password: {
                            required: "Enter your password<br />",
                            minlength: "Password must be minimum 6 characters"
                        },
                        retype_password: {
                            required: "Enter confirm password",
                            equalTo: "Passwords must match"
                        },
                    },
                    errorPlacement: function(error, element) {
                        error.hide();
                        $('.messagebox').hide();
                        error.appendTo($('#alert-message'));
                        $('.messagebox').slideDown('slow');
                    },
                });

                if ($("#register_form").valid()) {
                    var data1 = $('#register_form').serialize();
                    $.ajax({
                        type: "POST",
                        url: "register.php",
                        data: data1, captcha: grecaptcha.getResponse(),
                        success: function(msg) {
                            console.log(msg);
                            $('.messagebox').hide();
                            $('#alert-message').html(msg);
                             $('.messagebox').slideDown('slow');
                             $("#btn").text('Please Wait...'); // a
                             top.location.href="index.php?msg=login";//redirection
                        }
                    });
                }
                return false;
            });
        });

        $("form").submit(function() {
    console.log($(this).serializeArray());
        console.log('captcha response: ' + grecaptcha.getResponse()); // --> captcha response: 
    return false;
});

    </script>

这是用于验证POST的PHP页面。

$secret="";
$response=$_POST["captcha"];
//$response = $_POST["g-recaptcha-response"];

$verify=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
$captcha_success=json_decode($verify);
if ($captcha_success->success==false) {
  //This user was not verified by recaptcha.
  die($msg_recaptcha);
}
else if ($captcha_success->success==true) {
  //INSERT TO DB SCRIPT
}

不确定我在做什么错。谁能帮助我。谢谢

php ajax recaptcha
1个回答
0
投票

让我们尝试一下

//PHP Code
$secret = "";
$response = $_POST["captcha"];
//$response = $_POST["g-recaptcha-response"];

$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
$captcha_success = json_decode($verify);
return $captcha_success->success;


//jQuery
if ($("#register_form").valid()) {
        var data1 = $('#register_form').serialize();
        $.ajax({
            type: "POST",
            url: "register.php",
            data: {'data1':data1,'captcha':grecaptcha.getResponse()},
            //captcha: grecaptcha.getResponse(),
            success: function(msg) {
                console.log(msg);
                //check if response is true
                if (msg == true) {
                    $('.messagebox').hide();
                    $('#alert-message').html(msg);
                    $('.messagebox').slideDown('slow');
                    $("#btn").text('Please Wait...'); // a
                    top.location.href = "index.php?msg=login"; //redirection
                } else {
                    $('#alert-message').html("HELLO CYBORG!");
                }

            }
        });

如果响应不是布尔值,那么您可能要尝试使用字符串,只需检查响应数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.