2009-05-23 3 views
4

Я пытаюсь использовать reCaptcha на моем сайте, а recaptcha_challenge_field и recaptcha_response_field не добавляются в массив $ _POST на бэкэнд, но остальные переменные из моей формы.

Любые идеи? Я дважды проверил открытые/закрытые ключи.

Вот сгенерированный 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> 

Вот мой обработчик до сих пор:

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

Любая помощь будет очень ценна. Спасибо,

+1

У меня есть полная противоположная проблема:/ – RedXTech

ответ

10

Возможно, у вас могут возникнуть проблемы с DOM из-за способа чередования <table> и <form>. Попробуйте переместить теги <form> и </form> за пределами <table> и </table> соответственно.

+0

Вот и все! большое спасибо. – barfoon

+0

Это была отличная помощь, но кто-нибудь знает почему? Я предполагаю, что recaptcha javascript выполняет DOM и дроссели, а затем удаляет поля, так как «нормальные» элементы формы HTML отправляются в порядке. Было бы очень полезно, если бы это либо указало это в HTML, либо, по крайней мере, зарегистрировалось на консоли Javascript, если это то, что происходит. – Realist

 Смежные вопросы

  • Нет связанных вопросов^_^