954,580 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Incorrect Recaptcha Message

Hi there,

I'm currently adding in a recaptcha to a contact form that I didn't create in the first place, so I've been tentatively working my way around it. For some reason though, every time I complete my form, no matter whether the captcha I entered was right or not, it's coming up with the "incorrect response" (for the time being I have set google.co.uk as the "incorrect captcha" response, just for testing purposes). So it goes to google.co.uk every time I press submit.

I've put all the code for the two pages below. Hope you can help! Please bear in mind that I am pretty much a novice with this stuff and just working my way through tutorials and stuff, so any help would be great. I found an answer on this page ( http://code.google.com/p/recaptcha/wiki/FAQ#I_keep_getting_%22incorrect-captcha-sol%22_even_though_I ) which could help but I don't really understand it. Could anyone explain?

Here is the code for the page - www.electrix.co.uk/contact2.php

<?php require('sbsquared.class.php'); ?> 
<?php 
if(!empty($_GET['lang'])) { 
        switch($_GET['lang']) { 
                case 'fr': 
                        setlocale(LC_ALL, 'fr_FR.utf8'); 
                        $_SESSION['language'] = 'fr'; 
                        break; 
                case 'us': 
                        setlocale(LC_ALL, 'en_EN.utf8'); 
                        $_SESSION['language'] = 'us'; 
                        break; 
                case 'eu': 
                        setlocale(LC_ALL, 'en_EN.utf8'); 
                        $_SESSION['language'] = 'eu'; 
                        break; 
                case 'de': 
                        setlocale(LC_ALL, 'de_DE.utf8'); 
                        $_SESSION['language'] = 'de'; 
                        break; 
                default: 
                        setlocale(LC_ALL, 'en_EN.utf8'); 
                        $_SESSION['language'] = 'en'; 
        } 
} 

$sb = New SBSquared; 
$content = '<div id="main_middle"> 
<style> 
#sbtbtn{ 
        margin:0; 
        padding: 0; 
        list-style:none; 
        } 
#sbtbtn a{ 
        margin-top: 2px; 
        background: #80b0fc url(./images/right_arrow_light.gif) top right no- 
repeat; 
        display:block; 
        padding: 2px; 
        font-family:arial; 
        color:#fff; 
        text-decoration:none; 
        font-size:8pt; 
        font-weight:400; 
        margin-right:5px; 
        width:143px; 
        } 
#sbtbtn a.darkblue{ 
        margin-top: 2px; 
        background: #005ff8 url(./images/right_arrow_dark.gif) top right no- 
repeat; 
        display:block; 
        padding: 1px; 
        font-family:arial; 
        color:#fff; 
        text-decoration:none; 
        font-size:110%; 
        font-weight:400; 
        margin-right:10px; 
        width:130px; 
        padding-left: 2px; 
        } 
</style> 
<script language = "javascript"> 
function verifyEnEnquiry(theform) { 
        var my_message = "default"; 
        if(document.enquiries.FullName.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Full Name').'"); 
                //return false; 
        } else 
        if(document.enquiries.Company.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Company Name').'"); 
                //return false; 
        } else 
        if(document.enquiries.Email.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Email ').'"); 
                //return false; 
        } else 
        if(document.enquiries.address_4.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your City').'"); 
                //return false; 
        } else 
        if(document.enquiries.Enquiry.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Enquiry ').'"); 
                //return false; 
        } else 
        if(document.enquiries.JobTitle.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Job Title').'"); 
                //return false; 
        } else 
        if(document.enquiries.country.selectedIndex == 0) 
        { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Country').'"); 
                //return false; 
        } else 
        if(document.enquiries.address_1.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Address').'"); 
                //return false; 
        } else 
        if(document.enquiries.Postcode.value == "") { 
                alert("'.$sb->dt('Sorry, but you cannot proceed unless you complete 
your Postcode').'"); 
                //return false; 
        } 
        else { 
                //return true; 
                document.enquiries.submit(); 
        } 
        //alert(my_message); 
} 

</script> 
<!-- Start Dynamic Content --> 
'; 
$conn = $sb->openConnection(); 
if($_SESSION['language'] == "eu") { 
        $lang = "en"; 
} 

else { 
        $lang = $_SESSION['language']; 
} 

$sql = "SELECT * FROM `content_pages` WHERE `page` = 'contact' AND 
`lang` = '".$lang."'"; 
$result = mysql_query($sql, $conn) or die(mysql_error()); 
require_once('recaptchalib.php'); 
$publickey = "6LeiEskSAAAAAHnRLNDQS31tOEzWlGQzOabB8i_R"; // you got 
this from the signup page 
$captcha = recaptcha_get_html($publickey); 
$page_content = mysql_fetch_array($result); 
$content .= $page_content['content']; 
$content .= ' 
<!-- End Dynamic Content --> 
 <script type="text/javascript"> 
 var RecaptchaOptions = { 
    theme : "white" 
 }; 
 </script> 
<div class="boxheader">'.$sb->dt('Enquiry Form').'</div> 
<form style = "margin: 0px" name="enquiries" method="post" 
onSubmit="return verifyEnEnquiry(this);" action="verify.php"> 
</div> 
<table style = "margin-left: 11px; width: 383px"> 
<input type="hidden" name="Location" value="verify.php"> 
<tr> 
<style> 
        th { 
                 padding-left: 8px; 
                } 
</style> 
<th>'.$sb->dt("Enquiry Type *").'</th> 
<td align = "right"> 
<select name="EnquiryType" style="font-size:100%;width:202px;border: 
1px solid #808080" /> 
<option value="Sales">'.$sb->dt('Sales').'</option> 
<option value="Technical">'.$sb->dt('Technical').'</option> 
<option value="Quotations">'.$sb->dt('Quotations').'</option> 
<option value="General Enquiry">'.$sb->dt('General Enquiry').'</ 
option> 
<option value="Literature Request">'.$sb->dt('Literature Request').'</ 
option> 
</select> 
</td> 
</tr> 
<tr> 
<th>'.$sb->dt("Full Name *").'</th> 
<td align = "right"><input name="FullName" type="text" id="FullName" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Company *").'</th> 
<td align = "right"><input name="Company" type="text" id="Company" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Job Title *").'</th> 
<td align = "right"><input name="JobTitle" type="text" id="JobTitle" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Address *").'</th> 
<td align = "right"><input type="text" name="address_1" style="width: 
200px" /></td> 
</tr> 
<tr> 
<th></th> 
<td align = "right"><input type="text" name="address_2" style="width: 
200px" /></td> 
</tr> 
<tr> 
<th></th> 
<td align = "right"><input type="text" name="address_3" style="width: 
200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("City *").'</th> 
<td align = "right"><input type="text" name="address_4" style="width: 
200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Postal Code *").'</th> 
<td align = "right"><input name="Postcode" type="text" id="Postcode" 
style="width:200px" /></td> 
</tr> 
<th>'.$sb->dt("Country *").'</th> 
<td align = "right"> <select name="country" style="font-size:90%;width: 
202px;border:1px solid #808080"> 
'.genCountryList().' 
</select></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Telephone Number").'</th> 
<td align = "right"><input name="Telephone" type="text" id="Telephone" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Email *").'</th> 
<td align = "right"><input name="Email" type="text" id="Email" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Fax Number").'</th> 
<td align = "right"><input name="Fax" type="text" id="Fax" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Website").'</th> 
<td align = "right"><input name="Website" type="text" id="Website" 
style="width:200px" /></td> 
</tr> 
<tr> 
<th>'.$sb->dt("Enquiry *").'</th> 
<td align = "right"><textarea name="Enquiry" rows="8" style="font-size: 
90%;width:200px;border:1px solid #808080; font: 9pt arial"></ 
textarea></td> 
</tr> 
<!--<tr> 
<th>Send a File (Max. 2Mb)</th> 
<td align = "right"><input name="FileUpload" type="file" 
id="FileUpload" style="width:160px" /></td> 
</tr>--> 
<tr> 
<th colspan="2" align="center"> 
'. $captcha .' 
</th> 
</tr> 
<tr> 
<th>&nbsp;</th> 
<td>&nbsp;</td> 
</tr> 
</table> 
<center><table width = "100%" style = "border: 0px; width: 
395px"><tr><td align = "right"> 
<ul id="sbtbtn"> 
<li><a style = "margin-top: 5px; text-align: left; font: 8pt arial;" 
href="Javascript:verifyEnEnquiry(document.enquiries);" title="'.$sb- 
>dt('Send Enquiry').'" class="darkblue">'.$sb->dt('Submit Enquiry').'</ 

a></li> 
</ul> 
</td></tr></table> 
<p style="text-align:right !important"> 
<!--<input name="submit"  style="border:none" type="image" src="./img/ 
en/btn-sendenquiry.gif" title="'.$sb->dt("Send Enquiry").'">--> 
</p> 
</form> 
</p> 
<p><em>'.$sb->dt('*Mandatory fields').' 
</em></p> 
'; 
$content .= '</div>'; 
echo pageHeader($sb); 
echo pageContent($sb, $content); 
echo pageFooter($sb); 
?>

And here is the code for my verify.php:

<?php 
  require_once('recaptchalib.php'); 
  $privatekey = "6LeiEskSAAAAAHy701oWiFVDXf5YJhRKiRRQgnqH"; 
  $resp = recaptcha_check_answer ($privatekey, 
                                $_SERVER["REMOTE_ADDR"], 
                                $_POST["recaptcha_challenge_field"], 
                                $_POST["recaptcha_response_field"]); 
  if (!$resp->is_valid) { 
    // What happens when the CAPTCHA was entered incorrectly 
        header("Location: http://www.google.com"); 
  } else { 
    header("Location: contact-complete2.php"); 
  } 
  ?>
hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

As stated in the link, output the $_POST array to check whether all values have been set correctly. Also show output for your REMOTE_ADDR.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 
As stated in the link, output the $_POST array to check whether all values have been set correctly. Also show output for your REMOTE_ADDR.

I'm sorry. I don't know how to do that (I've barely touched PHP before). I'm not even meant to be working on this website :)

How exactly do I do that?

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

It shows exactly how to do it in the link you posted, just copy/paste that to your verify.php

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

OK, done that (didn't know how to show the output of REMOTE_ADDR though). Here's what it gave me back:

_POST: ========= Array ( [Location] => verify.php [EnquiryType] => Sales [FullName] => Joe Bloggs [Company] => Joe Bloggs Company [JobTitle] => Top Man [address_1] => Test Address [address_2] => [address_3] => [address_4] => Test City Joe [Postcode] => JOE BLOG5 [country] => Azores [Telephone] => [Email] => joebloggs@testestestestestestest.com [Fax] => [Website] => [Enquiry] => test Joe Bloggs )

=========

Warning: Cannot modify header information - headers already sent by (output started at /home/electrix/public_html/verify.php:4) in /home/electrix/public_html/verify.php on line 14

What next do you think?

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

Oh, and here's the output of REMOTE_ADDR (I've blanked a few things out that I'm not sure if you need to see):

Array ( [UNIQUE_ID] => ThgGYIJOKJHNSjN@NbAAHGAG [HTTP_HOST] => www.electrix.co.uk [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22 [CONTENT_LENGTH] => 301 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ORIGIN] => http://www.electrix.co.uk [CONTENT_TYPE] => application/x-www-form-urlencoded [HTTP_REFERER] => http://www.electrix.co.uk/contact2.php [HTTP_ACCEPT_LANGUAGE] => en-us [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_COOKIE] => PHPSESSID=67986ac64db43f2c75579acb41d1f91c; __utmb=71408455; __utma=71408455.1963067147.1309790052.1319113820.1319450474.69; __utmc=71408455; __utmz=71408455.1319113820.68.19.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=electrix [HTTP_CONNECTION] => keep-alive [PATH] => /sbin:/usr/sbin:/bin:/usr/bin [SERVER_SIGNATURE] => [SERVER_SOFTWARE] => Apache [SERVER_NAME] => www.electrix.co.uk [SERVER_ADDR] => Blanked out this. [SERVER_PORT] => 80 [REMOTE_ADDR] => Blanked out this. [DOCUMENT_ROOT] => /home/electrix/blanked out this [SERVER_ADMIN] => [email]webmaster@electrix.co.uk[/email] [SCRIPT_FILENAME] => /home/electrix/blanked out this/verify.php [REMOTE_PORT] => 51565 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => POST [QUERY_STRING] => [REQUEST_URI] => /verify.php [SCRIPT_NAME] => /verify.php [PHP_SELF] => /verify.php [REQUEST_TIME] => 1319451078 [argv] => Array ( )

[argc] => 0 )

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

As you can plainly see, [recaptcha_challenge_field] and [recaptcha_response_field] are missing, causing the check to fail. There most be something wrong with the form, it is not posting everything you need.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

Right. But how do I get them in there then? I'm sorry. I'm literally a novice with this stuff. If you could explain that it would be amazing?

The form tags are wrapped around the entire table which contains the fields and the captcha. Can't see why it wouldn't see the captcha in the results.

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

Try to get just the recaptcha working, without all the other stuff. Make sure that works, before you proceed. (I have no access to a php server at work, nor do I have a recaptcha account.)

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

The recaptcha shows up on the page fine. And it is within the form tags which are wrapped around the table which holds the fields. I can't see why it wouldn't see it.

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

It can be a dozen of things. Make a page that only outputs the recaptcha, without any js, and make sure that does what it should.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

Yep it does. See: www.electrix.co.uk/recaptcha_test.php

I'm stumped. I don't get it.

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

Then it must be something on the page that is interfering, some javascript most likely.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

Might post it over in the Javascript forum then :)

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

What? :)

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

pritaeas...

I've finally got it working. It turns out that there was a stray

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

Instead of header("Location: http://www.google.com"); I would do something like this header("Location: index.php?error=recaptcha");

Assuming index.php is the file you have your form in. Somewhere on your page you can check if ($_GET['error'] == 'recaptcha') and output a custom message in addition to your form.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

Cool. And how would you go about refilling the form with the info they've already entered, so they don't have to fill the whole thing out again?

hindu times
Junior Poster
125 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
 

See your other thread.

pritaeas
Posting Expert
Moderator
5,483 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: