PHPackages                             mangdin/thinkphp5.1-geetest - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. mangdin/thinkphp5.1-geetest

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

mangdin/thinkphp5.1-geetest
===========================

thinkphp5.1 geetest验证码

1.1(7y ago)042Apache-2.0PHP

Since Aug 24Pushed 7y agoCompare

[ Source](https://github.com/mangdin/thinkphp5.1-geetest)[ Packagist](https://packagist.org/packages/mangdin/thinkphp5.1-geetest)[ RSS](/packages/mangdin-thinkphp51-geetest/feed)WikiDiscussions master Synced today

READMEChangelog (2)DependenciesVersions (2)Used By (0)

thinkphp5.1-geetest
===================

[](#thinkphp51-geetest)

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();
    }
```

前台页面代码

```

正在加载验证码......
请先完成验证
```

```

    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);
        }
    });

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2818d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/41657311?v=4)[mangdin](/maintainers/mangdin)[@mangdin](https://github.com/mangdin)

---

Top Contributors

[![mangdin](https://avatars.githubusercontent.com/u/41657311?v=4)](https://github.com/mangdin "mangdin (6 commits)")

### Embed Badge

![Health badge](/badges/mangdin-thinkphp51-geetest/health.svg)

```
[![Health](https://phpackages.com/badges/mangdin-thinkphp51-geetest/health.svg)](https://phpackages.com/packages/mangdin-thinkphp51-geetest)
```

###  Alternatives

[solspace/craft-calendar

The most powerful event management and calendaring plugin!

1830.8k1](/packages/solspace-craft-calendar)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
