1. Modify the two methods in recaptchalib. php
Copy codeThe Code is as follows: function _ recaptcha_http_post ($ host, $ path, $ data, $ port = 80 ){
$ Req = _ recaptcha_qsencode ($ data );
$ Response = '';
$ Url = $ host. $ path;
$ Post_data = $ req;
$ Ch = curl_init ();
Curl_setopt ($ ch, CURLOPT_URL, $ url );
Curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1 );
// We are posting data!
Curl_setopt ($ ch, CURLOPT_POST, 1 );
// Add the post variable
Curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ post_data );
$ Output = curl_exec ($ ch );
Curl_close ($ ch );
// Echo $ output;
$ Response = $ output;
Return $ response;
}
Function recaptcha_check_answer ($ privkey, $ remoteip, $ challenge, $ response, $ extra_params = array ())
{
If ($ privkey = null | $ privkey = ''){
Die ("To use reCAPTCHA you must get an API key from <a href = 'https: // www.google.com/recaptcha/admin/create'> https://www.google.com/recaptcha/admin/create </a> ");
}
If ($ remoteip = null | $ remoteip = ''){
Die ("For security reasons, you must pass the remote ip to reCAPTCHA ");
}
// Discard spam submissions
If ($ challenge = null | strlen ($ challenge) = 0 | $ response = null | strlen ($ response) = 0 ){
$ Recaptcha_response = new ReCaptchaResponse ();
$ Recaptcha_response-> is_valid = false;
$ Recaptcha_response-> error = 'encrect-captcha-sol ';
Return $ recaptcha_response;
}
$ Response = _ recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify ",
Array (
'Privatekey' => $ privkey,
'Remoteip' => $ remoteip,
'Challenge' => $ challenge,
'Response' => $ response
) + $ Extra_params
);
$ Answers = explode ("\ n", $ response [1]);
$ Recaptcha_response = new ReCaptchaResponse ();
$ Pos = strpos ($ response, 'true ');
If ($ pos = false ){
$ Recaptcha_response-> is_valid = false;
$ Recaptcha_response-> error = $ response;
} Else {
$ Recaptcha_response-> is_valid = true;
}
Return $ recaptcha_response;
}
2. demo. phpCopy codeThe Code is as follows: <Body>
<Form action = "" method = "post">
<? Php
Require_once ('recaptchalib. php ');
// Get a key from https://www.google.com/recaptcha/admin/create
$ Publickey = "your public key --- apply for it at http://www.google.com/recaptcha ";
$ Privatekey = "your private key --- apply for a private key at http://www.google.com/recaptcha ";
# The response from reCAPTCHA
$ Resp = null;
# The error code from reCAPTCHA, if any
$ Error = null;
# Was there a reCAPTCHA response?
If ($ _ POST ["recaptcha_response_field"]) {
$ Resp = recaptcha_check_answer ($ privatekey,
$ _ SERVER ["REMOTE_ADDR"],
$ _ POST ["recaptcha_challenge_field"],
$ _ POST ["recaptcha_response_field"]);
If ($ resp-> is_valid ){
Echo "You got it! ";
} Else {
# Set the error code so that we can display it
$ Error = $ resp-> error;
Echo $ error;
// Echo $ _ POST ["recaptcha_challenge_field"];
// Echo $ _ POST ["recaptcha_response_field"];
}
}
Echo recaptcha_get_html ($ publickey, $ error );
?>
<Br/>
<Input type = "submit" value = "submit"/>
</Form>
</Body>
</Html>