2009-05-23 6 views
4

J'essaie d'utiliser reCaptcha sur mon site, et recaptcha_challenge_field, et recaptcha_response_field ne sont pas ajoutés au tableau $ _POST sur le backend - mais le reste des variables de mon formulaire le sont.

Des idées? J'ai vérifié les clés publiques/privées.

Voici le code HTML généré:

<form action='myform.php' name='myform' id='myform' method='post' enctype='multipart/form-data'> 
    <tr class='select'> 
     <td class='label'>Name:</td> 

     <td> 
     <input type='text' name='name' id='name' class='inputtext' maxlength='25' size='25' > 
     </td> 
    </tr> 
    <tr class='select'> 
     <td class='label'>Email:</td> 
     <td> 
     <input type='text' name='email' id='email' class='inputtext' maxlength='25' size='25' > 

     </td> 
    </tr> 
    <tr class='select'> 
     <td class='label'>Message:</td> 
     <td> 
     <textarea class='inputtext' name='message' rows='10' cols='45'></textarea> 
     </td> 
    </tr> 

    <tr class='select'> 
     <td class='label'>Are you human?</td> 
     <td> 
     <script type="text/javascript" src="http://api.recaptcha.net/challenge?k=MY_KEY"></script> 

    <noscript> 
     <iframe src="http://api.recaptcha.net/noscript?k=MY_KEY" height="300" width="500" frameborder="0"></iframe><br/> 
     <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
     <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> 
    </noscript> 
     </td> 
    </tr> 

    <tr> 
     <td> 
     &nbsp; 
     </td> 
     <td style='text-align: left;' colspan='2'> 
     <input type='submit' class='button' value='Send message'> 
     </td> 
    </tr> 
    </form> 

Voici mon gestionnaire jusqu'à présent:

print_r($_POST); 


require_once('inc/recaptchalib.php'); 
$privatekey = "MY_PRIVATE_KEY"; 
$resp = recaptcha_check_answer ($privatekey, 
           $_SERVER["REMOTE_ADDR"], 
           $_POST["recaptcha_challenge_field"], 
           $_POST["recaptcha_response_field"]); 

print_r($resp); 

if (!$resp->is_valid) { 
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
     "(reCAPTCHA said: " . $resp->error . ")"); 
} 

Toute aide serait vraiment apprécié. Merci,

+1

Je rencontre exactement le problème inverse:/ – RedXTech

Répondre

10

Il est possible que vous ayez des problèmes DOM en raison de la façon dont vous entrelacez <table> et <form>. Essayez de déplacer vos tags <form> et </form> en dehors de vos <table> et </table> respectivement.

+0

Ça l'a fait! Merci beaucoup. – barfoon

+0

Cela m'a beaucoup aidé, mais est-ce que quelqu'un sait pourquoi? Je suppose que le recaptcha javascript parcourt le DOM et étouffe puis supprime les champs, puisque les éléments de formulaire HTML "normaux" sont soumis correctement. Ce serait super utile s'il l'indiquait en HTML ou au moins connecté à la console Javascript, si c'est ce qui se passe. – Realist

Questions connexes