Нужна помощь с reCAPTCHA – продолжайте получать неверный код-captcha-sol

Я пытаюсь добавить reCAPTCHA на свой сайт, но продолжаю получать incorrect-captcha-sol ошибку incorrect-captcha-sol при отправке ответа.

Может ли кто-нибудь сказать мне, правильно ли я делаю следующее?

У меня есть общий index.php, который включает contact.php. В contact.php я вставил следующий код:

 require_once('recaptchalib.php'); $publickey = "XXXX"; $privatekey = "XXXX"; //the response from reCAPTCHA $resp = null; //the error code from reCAPTCHA, if any $error = null; if ($_POST['submit']) { $message = $_POST['message_txt']; $name = $_POST['name_txt']; $email = $_POST['email_txt']; $emailBody = $message; $to = 'xx'; $from = $name.' <'.$email.'>'; $subject = 'XX Website Enquiry'; $headers = 'From: '.$from; $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($resp->is_valid) { echo 'captcha correct'; if (mail($to,$subject,$emailBody,$headers)) { //echo 'mail sent'; $confirmation = 'sent'; } else { //echo 'mail not sent'; $confirmation = 'error'; } } else { # set the error code so that we can display it. You could also use # die ("reCAPTCHA failed"), but using the error message is # more user friendly $error = $resp->error; echo $error; } по require_once('recaptchalib.php'); $publickey = "XXXX"; $privatekey = "XXXX"; //the response from reCAPTCHA $resp = null; //the error code from reCAPTCHA, if any $error = null; if ($_POST['submit']) { $message = $_POST['message_txt']; $name = $_POST['name_txt']; $email = $_POST['email_txt']; $emailBody = $message; $to = 'xx'; $from = $name.' <'.$email.'>'; $subject = 'XX Website Enquiry'; $headers = 'From: '.$from; $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($resp->is_valid) { echo 'captcha correct'; if (mail($to,$subject,$emailBody,$headers)) { //echo 'mail sent'; $confirmation = 'sent'; } else { //echo 'mail not sent'; $confirmation = 'error'; } } else { # set the error code so that we can display it. You could also use # die ("reCAPTCHA failed"), but using the error message is # more user friendly $error = $resp->error; echo $error; } 

}

В моем html я вставил CAPTCHA следующим образом:

 <form name="contactForm" method="post" action="index.php?id=contact&action=submit#contact"> <tr><td>Name</td><td><div align="right"> <input type="text" name="name_txt" class="input"> </div></td></tr> <tr><td>Email</td><td><div align="right"> <input type="text" name="email_txt" class="input"> </div></td></tr> <tr><td height="10"></td></tr> <tr><td colspan="2">Message</td></tr> <tr><td colspan="2"><textarea name="message_txt" class="textarea" style="width:200px; height:100px"></textarea></td></tr> <tr><td colspan="2"><?php echo recaptcha_get_html($publickey, $error); ?></td></tr> <tr><td colspan="2" style="padding-top:10px;"><input type="image" src="images/header_06.gif" name="submit" value="submit"></td></tr> </form> 

Я не вижу, что я делаю что-то неправильно, но буду признателен за конструктивную критику.

ТИА

Я решил это, это одна из самых необычных вещей, с которыми я столкнулся, мой синтаксис был ранее:

 <table> <form> <tr><td></td></tr> </form> </table> 

Я изменил это на следующее:

 <form> <table> <tr><td></td></tr> </table> </form> 

Из-за этого переключателя, вдруг recaptcha_response_field и recaptcha_challenge_field отправляют значения обратно в форму.

Я не могу понять, почему это, потому что все MY переменные формы были отправлены обратно перед коммутатором.

Спасибо всем за указатели.

если вы дважды отправляете чек – например, один раз из javascript и один раз через php второй будет терпеть неудачу, так как API только разрешает возвращать действительный один раз.

Надеюсь, что это поможет, Джош

Это потому, что форма не может быть на внешней стороне tr ….. она должна быть на внешней стороне таблицы ….. форма не может быть вставлена ​​в таблицу, ее можно вставить в td.

В моем случае ошибка заключалась в том, чтобы установить форму без указания:

Метод = "POST"

Ура!

Вы уверены, что набрали правильные слова?

это один из сайтов recaptcha:

 Line 1 "true" or "false". True if the reCAPTCHA was successful Line 2 if Line 1 is false, then this string will be an error code. reCAPTCHA can display the error to the user (through the error parameter of api.recaptcha.net/challenge). Implementations should not depend on error code names, as they may change in the future. Example: If your response looks like this: false **incorrect-captcha-sol** ... you can add '&error=incorrect-captcha-sol' to the challenge request URL, and the user will get an error code.