在很多時候我們都會遇到驗證碼的多種場景,不同的產(chǎn)品也會使用不同的登錄驗證方式。
在項目開發(fā)中,我將KgCaptcha應用到搜索和分頁中,下面是我寫的的記錄。
1、頁面創(chuàng)建一個搜索表單
<form name="search" method="post" id="searchForm">
<input type="hidden" name="page" value="" />
<ol class="word"><input type="text" name="word" value="" maxlength="30" /></ol>
<ol class="submit"><input type="submit" name="" value="" />
</form>
2、接入KgCaptcha
<script src="captcha.js?appid=xxx"></script>
<script>
kg.captcha({
// 綁定彈窗按鈕
button: "#captchaButton",
// 驗證成功事務處理
success: function (e) {
// 驗證成功,直接提交表單
console.log(e);
$('#kgCaptchaToken').val(e["token"])
setTimeout(() => {
$('form[name=search]').submit()
}, 500);
},
// 驗證失敗事務處理
failure: function (e) {
console.log(e);
},
});
</script>
<a id="captchaButton" hidden>點擊彈出驗證窗口</a>
<input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value=""/>
3、彈出驗證窗口按鈕
將表單提交綁定到id為captchaButton的彈出驗證窗口按鈕,當點擊搜索,表單提交時,彈出驗證窗口,待用戶驗證成功顯示搜索結果。
4、分頁限制
首次搜索,需要彈出驗證;
第一頁和第三頁之后,需要彈出驗證;
其余不需要驗證的頁碼,直接顯示搜索結果;
if (page=='' || page=='1' || page > '3') {
$('#captchaButton').click()
}
5、后端代碼
后端根據(jù)當前頁碼,對提交的kgCaptchaToken進行驗證,驗證通過顯示搜索結果;
<?php
if ($_POST['page']=='' || $_POST['page']=='1' || $_POST['page'] > '3') {
include "KgCaptcha/KgCaptchaSDK.php";
// 填寫你的 AppId,在應用管理中獲取
$appId = "xxx";
// 填寫你的 AppSecret,在應用管理中獲取
$appSecret = "xxx";
$request = new kgCaptcha($appId, $appSecret);
// 填寫應用服務域名,在應用管理中獲取
$request->appCdn = "https://cdn.kgcaptcha.com";
// 前端驗證成功后頒發(fā)的 token,有效期為兩分鐘
$request->token = $_POST["kgCaptchaToken"];
// 當安全策略中的防控等級為3時必須填寫
$request->userId = "kgCaptchaDemo";
// 請求超時時間,秒
$request->connectTimeout = 10;
$requestResult = $request->sendRequest();
if ($requestResult->code === 0) {
// 驗簽成功邏輯處理
// 輸出搜索結果
...
} else {
// 驗簽失敗邏輯處理
// 失敗,提示錯誤并跳轉(zhuǎn)頁面
msgbox("驗證失敗,錯誤信息:{$requestResult->msg}",'search.php');
return false;
}
} else {
// 輸出搜索結果
...
}
?>
SDK開源地址:KgCaptcha (KgCaptcha) · GitHub,順便做了一個演示:凱格行為驗證碼在線體驗
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號