点击 返回调试器
仿Google点图验证码接口
接口地址:
https://blog.junphp.com/api/google_captcha/php/v1/ajax_vif.php
请求头:
无
请求类型:
POST
数据类型:
application/x-www-form-urlencoded
请求参数:
{
appid:"blog.junphp.com", // 固定这个值就行
junphp_session_id: "s9iiehp6ttkokmp8tbd10pn385", // session_id,通过前端获取
junphp_captcha_code: ",1,1,3,", // 验证码的值,通过前端获取
}
返回值:
数据类型:
json
// 成功
{
"code": "00",
"msg": "验证通过",
"data": {}
}
// 失败
{
"code":"01",
"msg":"验证失败",
}
// 二次确认将会失效
{
"code":"02",
"msg":"验证码已失效",
}
取值结果:
code
为
00
时,接口正常,其他情况下都是错误。
示例代码:
前端:
<!--依赖JQ-->
<script src="https://blog.junphp.com/public/js/jquery.min.js"></script>
<!--引入captcha SDK-->
<script type="text/javascript" src="https://blog.junphp.com/api/google_captcha/php/junphp_vif.js"></script>
<!--必备class,不能改-->
<div class="junphp_vif"></div>
<!--可使用下列方式获取必备的校验方式-->
<script>
$.ajax({
url : 'https://blog.junphp.com/api/google_captcha/php/v1/ajax_vif.php',
type : 'post',
data : {
appid:'blog.junphp.com',
junphp_session_id:$('#junphp_vif_session_id').val(),
junphp_captcha_code:$('#junphp_captcha_code').val(),
},
success : function(arr){
var array = eval('('+arr+')');
if (array.code == '02') {
// 过期,刷新验证码
junphp_vif_captcha();
} else if (array.code == '00') {
// 校验从成功
} else {
// 校验失败
}
}
});
</script>
junphp_session_id
和
junphp_captcha_code
是校验接口的必传参数。
正常情况下,我们都不会在前端进行接口校验,这时候可以将参数传递给后端,然后再通过
CURL
进行后端校验。
后端校验:
function https_request($url, $data = null){
# 初始化一个cURL会话
$curl = curl_init();
//设置请求选项, 包括具体的url
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //禁用后cURL将终止从服务端进行验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1); //设置为post请求类型
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //设置具体的post数据
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl); //执行一个cURL会话并且获取相关回复
curl_close($curl); //释放cURL句柄,关闭一个cURL会话
return $response;
}
// 校验示例
$res = https_request('https://blog.junphp.com/api/google_captcha/php/v1/ajax_vif.php', [
'appid' => 'blog.junphp.com',
'junphp_session_id' => $_POST['junphp_session_id'],
'junphp_captcha_code' => $_POST['junphp_captcha_code'],
]);
$arr = json_decode($res, true);
if ($arr['code'] == '02') {
// 前端可以调用junphp_vif_captcha()函数,刷新验证码
} else if ($arr['code'] == '01') {
// 校验不通过
} else if ($arr['code'] == '00') {
// 校验通过
}