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.
incorrect-captcha-sol = The private key is the problem. Checks if there is not a space at the end of the key.
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.
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With