我正在尝试在我的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 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!");
}
}
});
如果响应不是布尔值,那么您可能要尝试使用字符串,只需检查响应数据类型。