이 기사를 찾을 수 있습니다. 이는 더 이상 Jiexian 인증에 완전히 익숙하지 않다는 것을 의미합니다. 말도 안되는 내용을 다루지 않고 사용 방법을 설명하기 전에 먼저 몇 가지 URL을 붙여넣어 보겠습니다. 사용:
공식 웹사이트: http://www.geetest.com/
공식 문서: http://www.geetest.com/install/sections/idx -basic-introduction. html
github: https://github.com/GeeTeam/gt-php-sdk.git
사용방법:
먼저 앞면을 확인하려면 -로그인 페이지와 같은 최종 사용 페이지
d90e94804a38b999d0f6d02b56d79e5a2cacc6d41bbb37262a98f745aa00fbf0
5f80e307eff5c414e69459f0bdcaaa4c2cacc6d41bbb37262a98f745aa00fbf0
1. 로그인 페이지에서 가져온 클래스 라이브러리에 액세스합니다. :
귀하의 웹사이트에서 https를 사용하는 경우 Jiqianku가 https 프로토콜로 도입되는 위치만 변경하면 되며 다른 위치는 변경할 필요가 없습니다. 예를 들어 다음 코드로 바꿉니다.
1219a96a82800cca3c808cb42a60e37c2cacc6d41bbb37262a98f745aa00fbf0
17569962678037bcb4575e53cacd5df62cacc6d41bbb37262a98f745aa00fbf0
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 주소 "../web/StartCaptchaServlet.php"에 적힌 내용은 해당 URL에서 자세히 설명드리겠습니다. 서버 측 코드 배포.
하지만 위 코드에는 "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 및 인증 키:
1. 인증 백그라운드에서 계정 등록
2. 현재 인증된 ID/키 세트를 가져오기 위해 인증 추가
3. ID 및 키를 captcha_id/로 바꿉니다. config.php 파일에서 private_key 변수의 값
4. 제출 버튼 클릭 후 서버측 검증(2차 검증)
예를 들어 위에서 언급한 것처럼 사용자가 로그인하면 사용자 이름, 비밀번호 및 인증 코드 정보가 모두 서버에 제출되었습니다. 이때 인증을 수행할 수 있습니다.
<?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 중국어 웹사이트를 주목하세요!