secret = $secret; } public function get_content($url, $data=array()) { $curlsession = curl_init(); curl_setopt ($curlsession, CURLOPT_URL, $url); curl_setopt ($curlsession, CURLOPT_POST, 1); curl_setopt ($curlsession, CURLOPT_POSTFIELDS, http_build_query($data, '', '&')); curl_setopt ($curlsession, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt ($curlsession, CURLINFO_HEADER_OUT, false); curl_setopt ($curlsession, CURLOPT_HEADER, false); curl_setopt ($curlsession, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($curlsession, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt ($curlsession, CURLOPT_TIMEOUT, 3); $response = curl_exec($curlsession); $cinfo = curl_getinfo($curlsession); curl_close($curlsession); if ($cinfo['http_code'] != 200){ return ''; } return $response; } /** * Submits an HTTP GET to a reCAPTCHA server. * * @param string $path url path to recaptcha server. * @param array $data array of parameters to be sent. * * @return array response */ private function submit($url, $data) { $response = $this->get_content($url, $data); return $response; } /** * Calls the reCAPTCHA siteverify API to verify whether the user passes * CAPTCHA test. * * @param string $remoteIp IP address of end user. * @param string $response response string from recaptcha verification. * * @return ReCaptchaResponse_v */ public function verify($response, $remoteIp = null) { // Discard empty solution submissions if ($response == null || strlen($response) == 0) { $recaptchaResponse = new ReCaptchaResponse_v(); $recaptchaResponse->success = false; $recaptchaResponse->errorCodes = 'missing-input'; return $recaptchaResponse; } $getResponse = $this->submit( self::$_siteVerifyUrl, array ( 'secret' => $this->secret, 'remoteip' => $remoteIp, 'version' => self::VERSION, 'response' => $response ) ); $answers = $getResponse ? json_decode($getResponse, true) : array(); $recaptchaResponse = new ReCaptchaResponse_v(); if (isset($answers['success']) && $answers['success'] == true) { $recaptchaResponse->success = true; } else { $recaptchaResponse->success = false; $recaptchaResponse->errorCodes = isset($answers['error-codes']) ? $answers['error-codes'] : 'http_error'; } return $recaptchaResponse; } } ?>