2009-05-23 13 views
4

Ich versuche, reCaptcha auf meiner Website zu verwenden, und recaptcha_challenge_field und recaptcha_response_field werden nicht hinzugefügt, um die $ _POST-Array im Backend - aber der Rest der Variablen aus meinem Formular sind.

Irgendwelche Ideen? Ich habe die öffentlichen/privaten Schlüssel doppelt überprüft. Hier

ist die erzeugte HTML:

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

Hier ist mein Handler so weit:

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 . ")"); 
} 

Jede mögliche Hilfe würde sehr geschätzt werden. Vielen Dank,

+1

Ich habe das genaue Gegenteil Problem:/ – RedXTech

Antwort

10

Möglicherweise haben Sie DOM Probleme wegen der Art, wie Sie Interleaving sind <table> und <form>. Versuchen Sie, Ihre <form> und </form> Tags außerhalb Ihrer <table> bzw. </table> zu verschieben.

+0

Das hat es geschafft! Danke vielmals. – barfoon

+0

Das war eine große Hilfe, aber weiß jemand warum? Ich gehe davon aus, dass das recaptcha javascript das DOM durchläuft und Chokes dann die Felder entfernt, da "normale" HTML-Formularelemente ok übergeben werden. Es wäre super-hilfreich, wenn es entweder in HTML angezeigt oder zumindest in der Javascript-Konsole geloggt wäre, wenn das so ist. – Realist