帝国cms采集插件带云存储 帝国CMS整合腾讯防水墙验证码

帝国CMS教程

帝国cms采集插件带云存储 帝国CMS整合腾讯防水墙验证码 第1张

效果图

做网站,验证码是个少不了的东西。可以自动系统自带的验证码,这个在一般网站中是已经满足需求的。

但是,当你感觉自带的图形验证码不够安全的时候,或许你就会想换种验证方法。这个怎么换呢?是自己开发?还是使用别人已经开发好的?

如果自己有能力开发安全点的验证码,就不必为此事困惑了。如果使用别人的验证码?那使用谁的呢?怎么使用呢!

今天跟大家说一款验证码--->腾讯防水墙,官网地址:https://007.qq.com/它的功能特点这里不多说,大家可以去它官网了解一下。

我们先使用qq账号登陆一下获取到appid、appSecretKey,这步比较简单这里不多说。

接着我们在自己网页上引用它的js文件,代码如下:

<scriptsrc="https://ssl.captcha.qq.com/TCaptcha.js"></script><scriptsrc="https://cdn.bootcss.com/jquery/3.3.0/jquery.js"></script>

在你想要激活验证码的DOM元素(eg. button、p、span)内加入以下id及属性

<!--点击此元素会自动激活验证码--><!--id:元素的id(必须)--><!--data-appid:AppID(必须)--><!--data-cbfn:回调函数名(必须)--><!--data-biz-state:业务自定义透传参数(可选)--><buttonid="TencentCaptcha"data-appid="200316398*"//刚注册的appiddata-cbfn="callback"//用户触发验证时调用的函数名,可以自己定义,你想搞个aaa都行>验证</button>

为验证码创建回调函数,注意函数名要与data-cbfn相同

<script>window.sCallback=function(res){if(res.ret===0){$.ajax({type:'post',url:'/e/shu/captcha/index.php',data:{'enews':'checkYzm','ticket':res.ticket,'randstr':res.randstr},dataType:'json',success:function(res){if(res.response==1){//服务器返回正确结果,然后处理}}})}}</script>

完成以上操作后,点击激活验证码的元素,即可弹出验证码。

服务器接入验证:

在验证完成后,客户端收到获得一个验证票据(ticket)。将票据上传至服务器,并发送GET请求到下方接口可以校验验证码的票据,判断当次验证是否成功。

URL: https://ssl.captcha.qq.com/ticket/verify

字段名 描述
aid (必填) 2003163982
AppSecretKey (必填) 01r99tD8UEg6yBWacQ9MS5w**
Ticket (必填) 验证码客户端验证回调的票据
Randstr (必填) 验证码客户端验证回调的随机串
UserIP (必填) 提交验证的用户的IP地址(eg: 10.127.10.2)

返回值

Json格式,eg:{response:1, evil_level:70, err_msg:""}

字段名 描述
response 1:验证成功,0:验证失败,100:AppSecretKey参数校验错误[required]
evil_level [0,100],恶意等级[optional]
err_msg 验证错误信息[optional],查看详细说明

至此,验证码接入已完成,如需对验证码进行定制请往下阅读详细配置,更多配置项可访问配置中心。

完整代码如下:

<?php/***CreatedbyPhpStorm.*User:ShuQQ:610712114*Date:2019/4/20002*Time:上午10:08*功能:*/require('../../class/connect.php');include("../../class/db_sql.php");$link=db_connect();$empire=newmysqlquery();$enews=$_POST['enews'];if($enews=='checkYzm'){echosCheckYzm($_POST);}functionsCheckYzm($add){global$empire,$dbtbpre;$ticket=$add['ticket'];$randstr=$add['randstr'];if(!$ticket){returnjson_encode(array('error'=>0,'msg'=>'票据错误'));}$aid='您的appid';$appsecretkey='你的AppSecretKey';$url='https://ssl.captcha.qq.com/ticket/verify?aid='.$aid.'&AppSecretKey='.$appsecretkey;$url.='&Randstr='.$randstr;$url.='&Ticket='.$ticket;$url.='&UserIP='.egetip();returnhttpGetRequest($url);}/***函数的含义说明:CURL发送get请求获取数据*@paramstr$url发送接口地址*@return返回json数据*/functionhttpGetRequest($url){$curl=curl_init();//启动一个CURL会话curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_HEADER,0);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);//跳过证书检查$output=curl_exec($curl);//返回api的json对象//关闭URL请求curl_close($curl);return$output;//返回json对象}