Php space does not support socket but curl recaptcha usage. For more information, see. 1. modify the two methods in recaptchalib. php
The 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 https://www.google.com/recaptcha/admin/create ");
}
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. php
The code is as follows: