我正在试图阻止表单提交,如果recaptcha返回false,它确实如此,但它仍然提交表单。我也使用过e.preventDefault而且没有用,所以一定不是正确的。
提前感谢您的帮助。
JQUERY:
submit: function() {
$form = $('#registration-form');
$form.submit(function (e) {
$output = _validate($form);
if($output == false) {
e.preventDefault(e);
} else {
$.ajax({
type: "POST",
url: "http://" + window.location.hostname + "/wp-content/themes/Listex/includes/plugins/forms/recaptcha.php",
async: false,
data: "g-recaptcha-response=" + grecaptcha.getResponse(),
success: function(response) {
alert(response);
if (response == "false")
return false;
}
});
}
});
},
recaptcha.php:
<?php
$secret="secret code";
$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);
echo json_encode($captcha_success->success);
答案 0 :(得分:0)
最后将其与当前验证联系起来:
jQuery的:
if(output == true) {
$.ajax({
type: "POST",
async: false,
url: "http://" + window.location.hostname + "/wp-content/themes/Listex/includes/plugins/forms/recaptcha.php",
data: {
//THIS WILL TELL THE FORM IF THE USER IS CAPTCHA VERIFIED.
captcha: grecaptcha.getResponse()
},
success: function( data ) {
console.log("FORM SUCCESSFUL");
output = data;
},
});
}
if ( !output ) alert( 'Please ensure all required fields have been entered' );
return output;
recaptcha.php:
<?php
if(isset($_POST['captcha']) && !empty($_POST['captcha'])){
$secret="6Lej1CkUAAAAAP0ACyvliPJo7Tp5I2eH52C-rsfG";
$response = $_POST["captcha"];
$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
$captcha_success = json_decode($verify);
echo json_encode($captcha_success->success);
}
?>