效果圖
做網(wǎng)站,驗(yàn)證碼是個(gè)少不了的東西??梢宰詣?dòng)系統(tǒng)自帶的驗(yàn)證碼,這個(gè)在一般網(wǎng)站中是已經(jīng)滿足需求的。
但是,當(dāng)你感覺自帶的圖形驗(yàn)證碼不夠安全的時(shí)候,或許你就會(huì)想換種驗(yàn)證方法。這個(gè)怎么換呢?是自己開發(fā)?還是使用別人已經(jīng)開發(fā)好的?
如果自己有能力開發(fā)安全點(diǎn)的驗(yàn)證碼,就不必為此事困惑了。如果使用別人的驗(yàn)證碼?那使用誰的呢?怎么使用呢!
今天跟大家說一款驗(yàn)證碼--->騰訊防水墻,官網(wǎng)地址:https://007.qq.com/它的功能特點(diǎn)這里不多說,大家可以去它官網(wǎng)了解一下。
我們先使用qq賬號(hào)登陸一下獲取到appid、appSecretKey,這步比較簡(jiǎn)單這里不多說。
接著我們?cè)谧约壕W(wǎng)頁上引用它的js文件,代碼如下:
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script><script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.js"></script>
在你想要激活驗(yàn)證碼的DOM元素(eg. button、p、span)內(nèi)加入以下id及屬性
<!--點(diǎn)擊此元素會(huì)自動(dòng)激活驗(yàn)證碼--><!--id : 元素的id(必須)--><!--data-appid : AppID(必須)--><!--data-cbfn : 回調(diào)函數(shù)名(必須)--><!--data-biz-state : 業(yè)務(wù)自定義透?jìng)鲄?shù)(可選)--><button id="TencentCaptcha" data-appid="200316398*" //剛注冊(cè)的appid data-cbfn="callback" // 用戶觸發(fā)驗(yàn)證時(shí)調(diào)用的函數(shù)名,可以自己定義,你想搞個(gè)aaa都行>驗(yàn)證</button>
為驗(yàn)證碼創(chuàng)建回調(diào)函數(shù),注意函數(shù)名要與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){ //服務(wù)器返回正確結(jié)果,然后處理 } } }) }}</script>
完成以上操作后,點(diǎn)擊激活驗(yàn)證碼的元素,即可彈出驗(yàn)證碼。
服務(wù)器接入驗(yàn)證:
在驗(yàn)證完成后,客戶端收到獲得一個(gè)驗(yàn)證票據(jù)(ticket)。將票據(jù)上傳至服務(wù)器,并發(fā)送GET請(qǐng)求到下方接口可以校驗(yàn)驗(yàn)證碼的票據(jù),判斷當(dāng)次驗(yàn)證是否成功。
URL: https://ssl.captcha.qq.com/ticket/verify
字段名 | 描述 |
---|---|
aid (必填) | 2003163982 |
AppSecretKey (必填) | 01r99tD8UEg6yBWacQ9MS5w** |
Ticket (必填) | 驗(yàn)證碼客戶端驗(yàn)證回調(diào)的票據(jù) |
Randstr (必填) | 驗(yàn)證碼客戶端驗(yàn)證回調(diào)的隨機(jī)串 |
UserIP (必填) | 提交驗(yàn)證的用戶的IP地址(eg: 10.127.10.2) |
返回值
Json格式,eg:{response:1, evil_level:70, err_msg:""}
字段名 | 描述 |
---|---|
response | 1:驗(yàn)證成功,0:驗(yàn)證失敗,100:AppSecretKey參數(shù)校驗(yàn)錯(cuò)誤[required] |
evil_level | [0,100],惡意等級(jí)[optional] |
err_msg | 驗(yàn)證錯(cuò)誤信息[optional],查看詳細(xì)說明 |
至此,驗(yàn)證碼接入已完成,如需對(duì)驗(yàn)證碼進(jìn)行定制請(qǐng)往下閱讀詳細(xì)配置,更多配置項(xiàng)可訪問配置中心。
完整代碼如下:
<?php/** * Created by PhpStorm. * User: Shu QQ:610712114 * Date: 2019/4/2 0002 * Time: 上午 10:08 * 功能: */require('../../class/connect.php');include("../../class/db_sql.php");$link=db_connect();$empire=new mysqlquery();$enews=$_POST['enews'];if($enews=='checkYzm') { echo sCheckYzm($_POST);}function sCheckYzm($add) { global $empire,$dbtbpre; $ticket=$add['ticket']; $randstr=$add['randstr']; if(!$ticket) { return json_encode(array('error'=>0,'msg'=>'票據(jù)錯(cuò)誤')); } $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(); return httpGetRequest($url);}/** * 函數(shù)的含義說明:CURL發(fā)送get請(qǐng)求 獲取數(shù)據(jù) * @param str $url 發(fā)送接口地址 * @return 返回json數(shù)據(jù) */function httpGetRequest($url){ $curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話 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對(duì)象 //關(guān)閉URL請(qǐng)求 curl_close($curl); return $output; //返回json對(duì)象}
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: 帝國(guó)CMS整合騰訊防水墻驗(yàn)證碼