axguowen/think-captchax

Advanced captcha for ThinkPHP

v1.0.0 2023-07-01 03:21 UTC

This package is auto-updated.

Last update: 2024-04-25 05:04:42 UTC


README

ThinkPHP 的高级验证码扩展

主要功能:

支持多平台配置:目前支持极验(Geetest)、Vaptcha平台;

可扩展自定义平台驱动;

支持facade门面方式调用;

支持动态切换平台;

安装

composer require axguowen/think-captchax

用法示例

本扩展不能单独使用,依赖ThinkPHP6.0+

首先配置config目录下的captchax.php配置文件,然后可以按照下面的用法使用。

生成验证码数据

use think\facade\CaptchaX;

// 生成极验验证码数据
$captchaData = CaptchaX::create();

print_r($captchaData);

验证码校验

$validateStatus = CaptchaX::validate();

// 验证不通过
if(!$validateStatus){
    throw new \think\Exception('验证不通过', 400);
}

动态切换平台

use think\facade\CaptchaX;

// 使用Vaptcha平台
$validateStatus = CaptchaX::platform('vaptcha')->validate();

// 验证不通过
if(!$validateStatus){
    throw new \think\Exception('验证不通过', 400);
}

配置说明

// 验证码配置
return [
    // 默认验证平台
    'default' => 'geetest',
    // 验证平台配置
    'platforms' => [
        // 极验平台
        'geetest' => [
            // 驱动类型
            'type' => 'Geetest',
            // 极验验证ID
            'captcha_id' => '',
            // 极验私钥
            'private_key' => '',
            // 加密模式, 支持md5/sha256/hmac-sha256, 默认为md5
            'digestmod' => '',
            // 二次验证challenge字段名, 默认geetest_challenge
            'challenge_field' => '',
            // 二次验证validate字段名, 默认geetest_validate
            'validate_field' => '',
            // 二次验证seccode字段名, 默认geetest_seccode
            'seccode_field' => '',
        ],
        // vaptcha平台
        'vaptcha' => [
            // 驱动类型
            'type' => 'Vaptcha',
            // 验证单元的VID
            'vid' => '',
            // 验证单元的KEY
            'key' => '',
            // 验证场景
            'scene' => 0,
            // 二次验证server字段名 默认server
            'server_field' => '',
            // 二次验证token字段名 默认token
            'token_field' => '',
        ],
    ],
];

自定义平台驱动

如果需要扩展自定义验证平台驱动,需要继承think\captchax\Platform类, 并实现create方法和validate方法。

具体代码可以参考现有的平台驱动

扩展自定义驱动后,只需要在配置文件captchax.php中设置default的值为该驱动类名(包含命名空间)即可。