2009-08-12 20 views
8

Tôi đang cố thêm reCAPTCHA vào trang web của mình nhưng vẫn gặp lỗi incorrect-captcha-sol khi tôi gửi câu trả lời.Cần trợ giúp với reCAPTCHA - tiếp tục nhận được captcha-sol không chính xác

Bất cứ ai có thể cho tôi biết liệu tôi có chính xác khi thực hiện những việc sau không?

Tôi có một tệp index.php chung, bao gồm contact.php. Trong contact.php Tôi đã chèn đoạn mã sau:

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

}

trong html của tôi, tôi chèn CAPTCHA như thế này:

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

tôi không thể thấy rằng tôi đang làm điều gì sai trái, nhưng sẽ đánh giá cao bất kỳ lời chỉ trích mang tính xây dựng nào.

TIA

Trả lời

19

tôi đã giải quyết điều này, nó là một trong những điều bất thường nhất mà tôi đã đi qua, cú pháp của tôi trước đây:

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

tôi đã thay đổi nó để này:

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

Vì công tắc này, đột nhiên recaptcha_response_fieldrecaptcha_challenge_field đang đăng các giá trị trở lại biểu mẫu.

Tôi không thể nghĩ tại sao điều này bởi vì tất cả các biến biểu mẫu MY đã được đăng lại trước khi chuyển đổi.

Cảm ơn tất cả các con trỏ.

7

nếu bạn gửi bài kiểm tra hai lần - ví dụ như một lần từ javascript và một lần qua php thứ hai sẽ thất bại như API chỉ cho phép một giải pháp để trở về giá trị một lần.

Hy vọng rằng sẽ giúp, Josh

0

Bạn có chắc bạn đang gõ vào từ đúng?

này là từ 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

Đó là bởi vì biểu mẫu không thể ở bên ngoài tr ..... nó phải ở trên mặt ngoài của bảng ..... biểu mẫu không thể được chèn vào bảng, nó có thể được chèn vào td mặc dù .

2

Trong trường hợp của tôi, lỗi là để thiết lập các hình thức mà không chỉ định:

method = "POST"

Cheers!

Các vấn đề liên quan