svg-captcha-isszz 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
svg-captcha-isszz 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
svg-captcha-isszz 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
svg-captcha-isszz 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
svg-captcha-isszz 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 PHP
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 屈超
适用人群 未知
收录时间 2020-08-06

软件简介

在 PHP 中生成 SVG 格式的验证码。

部分代码依赖 thinkphp6。

安装

composer require isszz/svg-captcha -vvv

接下来将字体放入tp根目录下的config/font目录

配置

<?php

// SVG 验证码配置

return [
    'width' => 150, // 宽度
    'height' => 50, // 高度
    'noise' => 5, // 干扰线条的数量
    'inverse' => false, // 反转颜色
    'color' => true, // 文字是否随机色
    'background' => '', // 验证码背景色
    'size' => 4, // 验证码字数
    'ignoreChars' => '', // 验证码字符中排除
    'fontSize' => 52, // 字体大小
    'charPreset' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', // 预设随机字符
    'math' => '', // 计算类型, 如果设置不是+或-则随机两种
    'mathMin' => 1, // 用于计算的最小值
    'mathMax' => 9, // 用于计算的最大值
    'fontName' => 'Comismsh.ttf', // 用于验证码的字体, 建议字体文件不超过3MB
];

使用方法

控制器内使用🌰

<?php
declare (strict_types = 1);

namespace app\index\controller;

use think\Response;
use think\Request;

class Captcha
{
    /**
     * 获取验证码, 用于api
    */
    public function index(Request $request)
    {
        $config = $this->BuildParam($request->param());
        
        return json([
            'code' => 0,
            'data' => svg_captcha($config),
            'msg' => 'success',
        ]);
    }

    /**
     * 直接显示svg验证码
    */
    public function svg(Request $request)
    {   
        $config = $this->BuildParam($request->param());

        $content = svg_captcha($config);
        
        return response($content, 200, ['Content-Length' => strlen($content)])->contentType('image/svg+xml');
    }

    /**
     * 验证输入验证码是否正确
    */
    public function check($code)
    {
        if(svg_captcha_check($code) === true) {
            return json([
                'code' => 0,
                'data' => null,
                'msg' => 'success',
            ]);
        }
        return json([
            'code' => 1,
            'data' => null,
            'msg' => 'error',
        ]);
    }

    /**
     * 根据传入参数组装配置
     * 
     * /captcha/svg//w/200/h/60/s/72/l/5
    */
    public function BuildParam($params = [])
    {
        $config = [];

        if(empty($params)) {
            return [];
        }

        // 模式,1=加法 2=减法, 或者随机两种
        if(!empty($params['m'])) {
            if($params['m'] == 1) {
                $config['math'] = '+';
            } elseif($params['m'] == 2) {
                $config['math'] =  '-';
            } else {
                $config['math'] = 'rand';
            }
        }

        if(!empty($params['w'])) {
            $config['width'] = $params['w'];
        }

        if(!empty($params['h'])) {
            $config['height'] = $params['h'];
        }

        // 文字大小
        if(!empty($params['s'])) {
            $config['fontSize'] = $params['s'];
        }

        // 显示文字数量, 非算数模式有效
        if(!empty($params['l'])) {
            $config['size'] = $params['l'];
        }

        // 干扰线条数量
        if(!empty($params['n'])) {
            $config['noise'] = $params['n'];
        }

        // 背景色, #fefefe
        if(!empty($params['b'])) {
            $config['background'] = $params['b'];
        }

        return $config;
    }
}

注册进tp验证工具

Validate::maker(function ($validate) {
    $validate->extend('svgcaptcha', function ($value) {
        return svg_captcha_check($value);
    }, ':attribute错误!');
});

本组件基于如下开源库

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于开源治理专区
2020/10/29 00:13

php版本的svg-captcha

在php中生成svg格式的验证码 thinkphp6 svg-captcha 还没有优化字形这块, 不知道把字形数据缓存下来能不能解决大文件字体处理慢的问题 安装 composer require isszz/svg-captcha -vvv 接下来将字体放入tp根目录下的config/font目录 配置 <?php // SVG 验证码配置 return [ 'width' => 150, // 宽度 'height' => 50, // 高度 'noise' => 5, // 干扰线条的数量 'inverse' => false, // 反转颜色 ...

0
0
发表了博客
2013/03/16 10:12

验证码CAPTCHA

Captcha http://baike.baidu.com/view/538168.htm EXIF http://baike.baidu.com/view/22006.htm

0
0
发表了博客
2019/02/14 12:44

CAPTCHA--验证码

验证码开发有两种方法: 1.自己用代码画一个 2.调用ValidateCode.jar工具包 第一种方式: 创建一个动态web工程 编写一个Servlet,在该Servlet内进行如下操作 验证码开发步骤: 1.在内存中创建一个图片对象 1 int width = 110; 2 int height = 25; 3 // 在内存中创建一个图片对象 4 BufferedImage img = new BufferedImage(width, height, 5 BufferedImage.TYPE_IN...

0
0
发表了博客
2019/10/31 15:35

Laravel - 验证码(captcha)

首先,登录网址 packagist.org 查找 laravel captcha,找到mews/captcha ,根据 packagist 上的使用方法一步步来实现验证码的安装。配置composer.json文件 composer 安装:composer require mews/captcha 注册providers (config/app.php) ,在这个数组中的最后追加如下代码: Mews\Captcha\CaptchaServiceProvider::class, 注册aliases (config/app.php),在这个数组中的最后追加如下代码:(laravel 5 以后不用注册) 'Cap...

0
0
发表了博客
2019/07/28 13:24

django验证码captcha

官方文档 https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 使用命令安装pip install django-simple-captcha==0.4.6 (==后面是版本号) 安装好之后添加到 settings.py中 把 url(r'^captcha/', include('captcha.urls')),添加到项目的urls.py中,如下图 Run python manage.py migrate 如下图 执行命令 makemigrations 然后再执行 migrate 进行数据表迁移 到这里没有报错说明captcha验证码组件已经...

0
0
发表了博客
2012/05/08 09:34

CAPTCHA技术服务

CAPTCHA:Completely Automated Public Turing test to tell Computers and Humans Apart.

0
0
2018/08/23 15:26

Laravel - 验证码(captcha)

本人感觉用的比较好的验证码包,拿出来分享一下,傻瓜式教程, 安装步骤: 首先,登录网址packagist.org查找 laravel captcha,找到mews/captcha ,根据packagist上的使用方法一步步来实现验证码的安装。 composer安装: composer require mews/captcha 注册providers (config/app.php) ,在这个数组中的最后追加如下代码: Mews\Captcha\CaptchaServiceProvider::class, 注册aliases (config/app.php),在这个数组中的最...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部