2015-12-01 1 views
0

У меня довольно сложный сценарий из 5 форм. Я использую вкладки jQuery с ajax для загрузки форм (внешние html-файлы).Google recaptcha с вкладками jquery и validate не отправляет только site_key

Я также проверяю некоторые формы с помощью проверки jQuery.

В конце все работает отдельно, у меня нет сообщений для 'g-recaptcha-response'.

Так вот мой индексный файл:

<head> 
    <script type="text/javascript"> 
     $(function() { 
      $("#forms").tabs({ 
       beforeLoad: function(event, ui) { 
        ui.jqXHR.fail(function() { 
         ui.panel.html(
           "Couldn't load this form. We'll try to fix this as soon as possible. " 
         ); 
        }); 
       }, 
       active: false 
      }); 
     }); 
    </script> 
</head> 

<body> 
<div id="forms" class="contactsHub"> 
    <ul class="contactsHubList"> 
     <li><a href="forms/form1.html">Form 1</a></li> 
     <li><a href="forms/form2.html">Form 2</a></li> 
     <li><a href="forms/form3.html">Form 3</a></li> 
     <li><a href="forms/form4.html">Form 4</a></li> 
     <li><a href="forms/form5.html">Form 5</a></li> 
    </ul> 
</div> 
</body> 

Один из моих файлов формы:

<script type="text/javascript"> 
    jQuery("#newsletter_form").validate({ 
     onkeyup: false, 
     rules: { 
      full_name_5: "required", 
      email_5: { 
       required: true, 
       email: true 
      } 
     }, 
     messages: { 
      full_name_5: "Please enter your Full Name.", 
      email_5: "Please enter a valid email address." 
     }, 
     submitHandler: function (form) { 
      jQuery("#wait").show(); 
      setTimeout(function(){ 
       form.submit(); 
      }, 5); 
     } 
    }); 
    var CaptchaCallback = function(){ 
     grecaptcha.render('RecaptchaField5', { 
      'sitekey' : 'my_key' 
     }); 
    }; 
</script> 
<script src="https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&amp;render=explicit" async defer></script> 

<div class="tabContent tabContent5"> 
    <form id="newsletter_form" method="post" action="grab.php"> 
     <ul> 
      <h2 title="Newsletter">Newsletter</h2> 
      <input type="hidden" name="form_name" id="form_name" value="Newsletter Signup"> 
      <li> 
       <label>Full Name *</label> 
       <input name="full_name_5" id="full_name_5" type="text" placeholder="Full Name *"> 
      </li> 
      <li> 
       <label>Email *</label> 
       <input name="email_5" id="email_5" type="text" placeholder="Email *"> 
      </li> 
      <li class="recaptchaWrapper"> 
       <div id="RecaptchaField5"></div> 
      </li> 
      <li class="submitForm"> 
       <input name="submit_5" value="Sign Up Now" id="submit_5" class="submitButton" type="submit"> 
      </li> 
     </ul> 
    </form> 
</div> 

И мой grab.php

// your secret key 
$secret = "my_secret"; 

// empty response 
$response = null; 

// check secret key 
$reCaptcha = new ReCaptcha($secret); 

// if submitted check response 
if ($_POST["g-recaptcha-response"]) { 
    $response = $reCaptcha->verifyResponse(
     $_SERVER["REMOTE_ADDR"], 
     $_POST["g-recaptcha-response"] 
    ); 
} 

if ($response != null && $response->success) { 
    echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!"; 
    foreach ($_POST as $key => $value) { 
     echo '<p><strong>' . $key.':</strong> '.$value.'</p>'; 
    } 
} 
else { 

    foreach ($_POST as $key => $value) { 
     echo '<p><strong>' . $key.':</strong> '.$value.'</p>'; 
} 

Так что я получаю пустой $ _POST ["g-recaptcha-response"]

Любая помощь будет оценена!

+0

Привет, спасибо за поиски. На самом деле 'grecaptcha.render (' RecaptchaField5 ... 'создает элемент с этим именем. – Genov

+0

** Проверьте его: ** 'var widgetId1; var onloadCallback = function() { widgetId1 = grecaptcha.render (' RecaptchaField5 ', {...} alert (grecaptcha.getResponse (widgetId1)); 'он не будет предупреждать ** name =" g-recaptcha-response "** –

+0

Вы видели мой ответ? –

ответ

0

Это будет посылать POST в форме $_POST["g-recaptcha-response"]

<div class="g-recaptcha" data-sitekey="site key"></div> 

<html> 
    <head> 
    <title>Google recaptcha</title> 
    <script src='https://www.google.com/recaptcha/api.js'></script> 
    </head> 
    <body> 
    <h1>Google RECAPTCHA Demo</h1> 
    <form id="x_form" action="form.php" method="post"> 
     <input type="email" placeholder="email" size="40"><br><br> 
     <textarea name="comment" rows="8" cols="39"></textarea><br><br> 
     <input type="submit" name="submit" value="Post comment"><br><br> 
     <div class="g-recaptcha" data-sitekey="site key ==="></div> 
    </form> 
    </body> 
</html> 
Смежные вопросы