点击 返回调试器

仿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":"验证码已失效",
}

取值结果:
code00时,接口正常,其他情况下都是错误。

示例代码:
前端:
<!--依赖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_idjunphp_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') {
    // 校验通过
}