Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google reCAPTCHA - keep getting `incorrect-captcha-sol`

I am trying to add a reCAPTCHA to my site, but keep getting incorrect-captcha-sol error when I submit the answer.

Can anyone tell me if I am correct in doing the following?

I have a generic index.php, which includes contact.php. In contact.php I have inserted the following code:

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 my html I inserted the CAPTCHA like this:

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

I cannot see that I am doing anything wrong, but would appreciate any help.

like image 657
Anriëtte Myburgh Avatar asked Aug 12 '09 07:08

Anriëtte Myburgh


People also ask

What does incorrect CAPTCHA Sol mean?

incorrect-captcha-sol = The private key is the problem. Checks if there is not a space at the end of the key.

Why do I keep getting invalid CAPTCHA?

If your CAPTCHA isn't being accepted, the problem might not be with your reading or your typing — the code might simply have expired. If you open a page and don't submit your entry form right away, your CAPTCHA might be invalid.

How do I change CAPTCHA settings?

Settings Navigate to the settings category. Security & Membership -> Protection Under , select a . CAPTCHA settings Control to use Save the settings. When you change the CAPTCHA type, all web parts and features that have CAPTCHA enabled use the new type.


2 Answers

I have solved this, it is one of the most unusual things I have come across, my syntax was previously:

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

I changed it to this:

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

Because of this switch, suddenly the recaptcha_response_field and recaptcha_challenge_field are posting values back to the form.

I cannot think why this because all MY form variables got posted back before the switch.

Thanks all for the pointers.

like image 93
Anriëtte Myburgh Avatar answered Sep 19 '22 12:09

Anriëtte Myburgh


Are You doing this from Your Localhost?

I solve this problem by adding localhost to the allowed domain for doing a verification in google reCaptcha settings

Domain reCaptcha Settings

like image 28
Aditya Kresna Permana Avatar answered Sep 22 '22 12:09

Aditya Kresna Permana