2009-08-12 3 views
8

Ich versuche, eine reCAPTCHA auf meiner Website hinzufügen, aber immer incorrect-captcha-sol Fehler erhalten, wenn ich die Antwort einreichen.Brauchen Sie Hilfe mit reCAPTCHA - immer falsch erhalten-Captcha-Sol

Kann mir jemand sagen, ob ich das Folgende richtig mache?

Ich habe eine generische index.php, die contact.php enthält. In contact.php habe ich den folgenden Code eingefügt:

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

}

In meinem html eingefügt ich den CAPTCHA wie folgt aus:

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

Ich kann nicht sehen, dass ich etwas falsch mache, aber würde jede konstruktive Kritik schätzen.

TIA

Antwort

19

ich diese gelöst haben, ist es eines der ungewöhnlichsten Dinge, die ich über gekommen sind, meine Syntax war vorher:

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

habe ich es zu dies:

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

Aufgrund dieses Schalters plötzlich die recaptcha_response_field und recaptcha_challenge_field geben Werte in das Formular zurück.

Ich kann nicht denken, warum dies, weil alle MY-Formular-Variablen vor dem Wechsel gebucht wurden.

Vielen Dank für die Zeiger.

7

wenn Sie die Prüfung zweimal Mitteilung verfassen - zB einmal von Javascript und einmal über php die zweite wird als die API nicht erlaubt nur eine Lösung gültig einmal zurückzukehren.

Hoffnung, dass Josh

0

Sind Sie sicher, dass Sie die Eingabe in der richtigen Worte hilft?

dieses ist von 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

Das ist, weil die Form nicht auf der Außenseite des tr ..... sein kann es auf der äußeren Tabelle sein ..... Form kann nicht in die Tabelle eingefügt werden, kann es in die td eingefügt werden obwohl .

2

In meinem Fall war der Fehler, das Formular zu setzen, ohne Angabe:

method = "POST"

Prost!