2017-07-20 3 views
-1

Je suis actuellement en train d'essayer d'arrêter la soumission du formulaire si la recaptcha renvoie false, ce qu'elle fait mais elle soumet toujours le formulaire. J'ai aussi utilisé e.preventDefault et ça ne marche pas, donc ça doit être quelque chose qui ne va pas.recaptcha 2 renvoie false mais soumet toujours fom

Merci d'avance pour votre aide.

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

Vous ne pouvez pas retourner quoi que ce soit à partir d'une fonction de rappel asynchrone – geocodezip

+0

des thats désolé que j'ai vu sur stackoverflow et essayé ne fonctionne toujours pas sans – Max

Répondre

0

Classé à la fin liée dans la validation actuelle:

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

} 
?>