thinkphp 3.2.3整合 极验验证码验证

2954

现在很多验证都用上了极验验证码,感觉确实比以前的验证要舒服很多~~~下面来看看怎么把它用在Thinkphp(Thinkphp3.2.3)上面吧:

第一步要先上去 极验的官网申请一个 ID KEY!http://www.geetest.com/


第二步 前往https://github.com/GeeTeam/gt-php-sdk 去下载 官方的 Php Demo(Thinkphp用的是PHP嘛!)

blob.png

将 文件夹 lib中的 blob.png

名称修改为

blob.png

在类上面 加上namespace Org\Util; (当然你也可以不加用其他方式也可以引入,看个人习惯)

复制放在 项目的 Thinkphp Core/Library/Org/Util/下面

第三步:前去http://www.geetest.com/install/sections/idx-client-sdk.html 看看客户端 教程:

目前有三种方式:

方式一(同步引入) 方式二(异步引入) 方法三(带failback功能)

具体代码:看官网的.....

我用的第三种方式(带failback功能)

客户端:<div id="captcha"></div>  
<script src="http://static.geetest.com/static/tools/gt.js"></script> 
<script>
      var handler = function (captchaObj) {
        captchaObj.appendTo("#captcha");
      };
      _url = "<{:U('Login/jiyan')}>";
      $.ajax({
        // 获取id,challenge,success(是否启用failback)
        url: _url,
        type: "get",
        dataType: "json", // 使用jsonp格式
        success: function (data) {
        initGeetest({
            gt: data.gt,
            challenge: data.challenge,
            product: "float", // 产品形式
            offline: !data.success
        }, handler);
    }
});
</script>

异步数据:
//极验客户端验证
	public function jiyan () {
		//实例化 GeetestLib 申请ID KEY
		$GtSdk = new GeetestLib(C("CAPTCHA_ID"), C("PRIVATE_KEY"));
		//ID 因为pre_process 方法的ID默认为NULL 所有ID可以无
		$user_id = md5(md5("xuanxuan"));
		//获取ID Key数据
		$status = $GtSdk->pre_process($user_id);
		$_SESSION['gtserver'] = $status;
		$_SESSION['user_id'] = $user_id;
		echo $GtSdk->get_response_str();
		//返回Json
		//$this->ajaxReturn($GtSdk->get_response_str());

	}


服务端:
先引入:use Org\Util\Geetestlib;
//极验验证
    $GtSdk = new GeetestLib(C("CAPTCHA_ID"), C("PRIVATE_KEY"));
    $user_id = $_SESSION['user_id'];
if ($_SESSION['gtserver'] == 1) {
    $result = $GtSdk->sucess_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $user_id);
    if (!$result) {
        $this->error("客官!验证码错误~~看准点...");
    }
}else{
    if (!$GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) {
       $this->error("客官!验证码错误~~看准点...");
    }
}


极验验证大致就是这样~~~!www.blogxuan.com 

体验一下吧:http://tp.blogxuan.com/xuan