你能找到這篇文章,說明你對極驗驗證已經不是完全陌生的了,所有廢話我就不多說了,直接開始表說如何使用它,不過在此之前呢,先粘貼幾個你可能會用得到的網址:
官網:http://www.geetest.com/
官方文件:http://www.geetest.com/install/sections/idx-basic-introduction.html
github: https://github.com/GeeTeam/gt-php-sdk.git
如何使用:
首先要確認前端使用頁面,例如登陸頁面
1.在登陸頁面訪問引入類庫:
如果您的網站使用https,則只需要將引入極驗庫的地方換成https協議即可,不需要更改其它地方。例如更換成以下程式碼即可:
2.初始化前端
下面的程式碼需要在頁面載入後就執行,如果你使用jQuery,可以寫在$(function( ){});內
$.ajax({ // 获取id,challenge,success(是否启用failback) url: "../web/StartCaptchaServlet.php?t=" + (new Date()).getTime(), // 加随机数防止缓存 type: "get", dataType: "json", success: function (data) { // 使用initGeetest接口 // 参数1:配置参数 // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件 initGeetest({ gt: data.gt, challenge: data.challenge, product: "popup", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效 offline: !data.success // 表示用户后台检测极验服务器是否宕机,与SDK配合,用户一般不需要关注 }, handlerPopup); } });
上面程式碼的意思是說,頁面載入後,需要到你指定的URL位址上取得驗證碼資訊,至於上面的URL位址「../web/StartCaptchaServlet.php」裡面寫了什麼內容,這個我們在伺服器端程式碼部署會詳細說明。
但是需要說明的是,上面的程式碼裡有一個回調函數叫“handlerPopup”,這個函數是你需要驗證碼的真正初始化程式碼:如下:
// 代码详细说明 var handlerPopup = function (captchaObj) { // 注册提交按钮事件,比如在登陆页面的登陆按钮 $("#popup-submit").click(function () { // 此处省略在登陆界面中,获取登陆数据的一些步骤 // 先校验是否点击了验证码 var validate = captchaObj.getValidate(); if (!validate) { alert('请先完成验证!'); return; } // 提交验证码信息,比如登陆页面,你需要提交登陆信息,用户名和密码等登陆数据 $.ajax({ url: "../web/VerifyLoginServlet.php", type: "post", // dataType: "json", data: { // 用户名和密码等其他数据,自己获取,不做演示 username:username, password:password, // 验证码数据,这些数据不用自己获取 // 这是二次验证所需的三个值 // 当然,你也可以直接设置验证码单独校验,省略其他信息 geetest_challenge: validate.geetest_challenge, geetest_validate: validate.geetest_validate, geetest_seccode: validate.geetest_seccode }, // 这里是正确返回处理结果的处理函数 // 假设你就返回了1,2,3 // 当然,正常情况是返回JSON数据 success: function (result) { // 1表示验证码验证失败 if (result == "1") { alert("验证码验证失败!"); }else if (result == "2") { alert("用户名或密码错误!"); }else if (result == "3") { alert("登陆成功!"); // 登陆成功了,可以在这里做其他处理 }else{ alert("登陆错误!"); } } }); }); // 弹出式需要绑定触发验证码弹出按钮 // 比如在登陆页面,这个触发按钮就是登陆按钮 captchaObj.bindOn("#popup-submit"); // 将验证码加到id为captcha的元素里 // 验证码将会在下面指定的元素中显示出来 captchaObj.appendTo("#popup-captcha"); // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html };
至此,前端的所有設定都寫完了,官方的說明文件:http://www.geetest.com/install/sections/idx-client-sdk.html
3.伺服器端部署(PHP)
在第一步中,我們設定了一個這樣的位址「 ../web/StartCaptchaServlet.php”,在這個地址裡邊寫什麼呢:
<?php // 引入文件 require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php'; require_once dirname(dirname(__FILE__)) . '/config/config.php'; // 实例化,实例化的参数在config中配置,分别是:验证ID 和 验证Key,如何获取下面会说。 $GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY); session_start(); // 这个是用户的标识,或者说是给极验服务器区分的标识,如果你项目没有预先设置,可以像下面这样设置: if(!isset($_SESSION['user_id'])){ $_SESSION['user_id']=uniqid();// 生成一个唯一ID } $user_id = $_SESSION['user_id']; // 或者,你就直接写成: // $user_id = "test"; // 生成验证码信息,并返回给客户端 $status = $GtSdk->pre_process($user_id); $_SESSION['gtserver'] = $status; $_SESSION['user_id'] = $user_id; echo $GtSdk->get_response_str(); ?>
如何獲取驗證ID 和驗證Key :
1.從驗證後台註冊帳號
2.添加驗證,可以獲取一組當前驗證的ID/Key
3.將ID和Key分別替換到config.php檔案中的captcha_id/private_key變數的值
4.點擊提交按鈕之後的服務端校驗(二次驗證)
比如上面說的,使用者登入時,你把使用者名稱和密碼和驗證碼資訊都提交到伺服器了,這個時候,你就可以做校驗了:
<?php // 引入文件 require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php'; require_once dirname(dirname(__FILE__)) . '/config/config.php'; session_start(); $GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY); // 比如你设置了一个验证码是否验证通过的标识 $code_flag=false; // 这里获取你之前设置的user_id,传送给极验服务器做校验 $user_id = $_SESSION['user_id']; if ($_SESSION['gtserver'] == 1) { $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $user_id); if ($result) { // 验证码验证成功 $code_flag=true; } }else{ if ($GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) { // 验证码验证成功 $code_flag=true; } } // 如果验证码验证成功,再进行其他校验 if($code_flag){ // 其他验证操作 // 用户名不对时,返回2,其他错误返回3,等等。。。。 }else{ // 验证码验证失败,返回1,这里和上面相呼应,当然我的项目没有简单的返回1,而是返回了JSON数据 echo 1; exit(-1); } ?>
感謝你的閱讀,希望能幫助到大家,謝謝大家對本站的支持!
更多PHP 極驗驗證碼實例講解相關文章請關注PHP中文網!