mangdin / thinkphp5.1-geetest
thinkphp5.1 geetest验证码
1.1
2018-08-24 06:57 UTC
This package is not auto-updated.
Last update: 2024-11-10 06:28:17 UTC
README
thinkphp5.1 geetest验证码
服务端验证代码
$config = Config::get('geetest.'); $GtSdk = new \mangdin\geetest\GeetestLib($config['geetest_id'], $config['geetest_key']); $data = array( "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式 "ip_address" => \think\facade\Request::host(), # 请在此处传输用户请求验证时所携带的IP ); if (Session::get('gtserver') == 1) { //服务器正常 $code = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'],$data); }else{ //服务器宕机,走failback模式 $code = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode']); } if (!$code){ $this->error('验证码错误'); } unset($data); unset($code); unset($config);
服务端验证码生成代码
public function geetest(){ $config = Config::get('geetest.'); $GtSdk = new \mangdin\geetest\GeetestLib($config['geetest_id'], $config['geetest_key']); $data = array( "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式 "ip_address" => \think\facade\Request::host(), # 请在此处传输用户请求验证时所携带的IP ); $status = $GtSdk->pre_process($data, 1); \think\facade\Session::set('gtserver',$status); echo $GtSdk->get_response_str(); }
前台页面代码
<div id="embed-captcha"></div> <p id="wait" class="show">正在加载验证码......</p> <p id="notice" class="hide">请先完成验证</p>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script> <script src="https://static.geetest.com/static/tools/gt.js"></script> <script> var handlerEmbed = function (captchaObj) { $("#embed-submit").click(function (e) { var validate = captchaObj.getValidate(); if (!validate) { $("#notice")[0].className = "show"; setTimeout(function () { $("#notice")[0].className = "hide"; }, 2000); e.preventDefault(); } }); // 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode captchaObj.appendTo("#embed-captcha"); captchaObj.onReady(function () { $("#wait")[0].className = "hide"; }); captchaObj.onSuccess(function () { //验证码成功之后执行的操作 }); }; $.ajax({ url: "{:url('index/login/geetest')}?t=" + (new Date()).getTime(), // 验证码地址加随机数防止缓存 type: "get", dataType: "json", success: function (data) { // 使用initGeetest接口 // 参数1:配置参数 // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件 initGeetest({ gt: data.gt, challenge: data.challenge, new_captcha: data.new_captcha, product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效 offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注 // 更多配置参数请参见:http://www.geetest.com/install/sections/idx-client-sdk.html#config }, handlerEmbed); } }); </script>