2009-08-12 97 views
8

私はreCAPTCHAを自分のサイトに追加しようとしていますが、回答を提出するとincorrect-captcha-solエラーが発生し続けます。reCAPTCHAのヘルプが必要です - 不正なcaptcha-solを取得し続ける

私は以下のことを正しく行うことができますか?

私は一般的なindex.phpを持っています。これにはcontact.phpが含まれています。私はこのようなCAPTCHAを挿入し、私のHTMLで

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

}

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

私は私が間違って何をやっていることを見ることができない、contact.phpで私は、次のコードを挿入しています建設的な批判を感謝するだろう。

TIA

答えて

19

からである私はこれを解決した、それは私の構文が以前いた、私が遭遇した最も珍しいものの一つです:

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

私はそれを変更これは:

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

このスイッチのため、突然recaptcha_response_fieldrecaptcha_challenge_fieldは値をフォームに戻して転記しています。

私はなぜこれを考えるのは、すべてのMYフォーム変数がスイッチの前にポストバックされているためです。

ありがとうございました。

7

あなたは二度チェックを掲示している場合 - 例えば、一度ジャバスクリプトから、一度APIが唯一の解決策は、一度有効返すことができますよう、PHPを介して第1が失敗します。

、 ジョシュ

0

に役立ちます希望は、あなたは正しい言葉で入力していますか?

この1つはrecaptcha website :

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

フォームがtrの外側にあることができないためです。.....テーブルの外側にある必要があります.....フォームはテーブルに挿入できませんが、 。私の場合は

2

、エラーは指定せずにフォームを設定することでした:

方法= "POST"

乾杯を!

関連する問題