极验验证码类
效果图:
类geetestlib.class.php 0 && $this->check_result_by_private($challenge, $validate, $key)) {
$query = 'seccode='.$seccode;
$servervalidate = $this->http_post($apiserver, '/validate.php', $query);
if (strlen($servervalidate) > 0 && $servervalidate == md5($seccode)) {
return true;
}
}
return false;
}
private function check_result_by_private($origin, $validate, $key) {
return $validate == md5($key.'geetest'.$origin) ? true : false;
}
private function http_post($host, $path, $data, $port = 80) {
// $data = $this->fix_encoding($data);
$http_request = post $path http/1.0\r\n;
$http_request .= host: $host\r\n;
$http_request .= content-type: application/x-www-form-urlencoded\r\n;
$http_request .= content-length: . strlen($data) . \r\n;
$http_request .= \r\n;
$http_request .= $data;
$response = '';
if (($fs = @fsockopen($host, $port, $errno, $errstr, 10)) == false) {
die ('could not open socket! ' . $errstr);
}
fwrite($fs, $http_request);
while (!feof($fs))
$response .= fgets($fs, 1160);
fclose($fs);
$response = explode(\r\n\r\n, $response, 2);
return $response[1];
}
private function fix_encoding($str) {
$curr_encoding = mb_detect_encoding($str) ;
if($curr_encoding == utf-8 && mb_check_encoding($str,utf-8)) {
return $str;
} else {
return utf8_encode($str);
}
}
}
?>控制器处理代码:import('org.net.geetestlib');
$verify = new geetestlib();
$key = c('verifykey');
$validate_response = $verify->geetest_validate(@$_post['geetest_challenge'], @$_post['geetest_validate'], @$_post['geetest_seccode'],$key);
if(empty($validate_response)) {
$this->error('验证码错误!');
}前端处理代码:(这里注意id的绑定)
ad:真正免费,域名+虚机+企业邮箱=0元