香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 119|回复: 11

php 服务端生成验证码

[复制链接]

5

主题

6

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-1-1 13:16:22 | 显示全部楼层 |阅读模式
废话不多说直接上代码
1.PHP代码:
class verifyCode
{   
    public static function codeConfig(){
        return [
        'codeStr' => //验证码随机字符
        ['0', '1', '2', '3', '4', '5', '6',' 7', '8', '9',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
        'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
        'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z','a',
        'b','c','d','e','f','g','h','i','j','k','l',
        'm','n','o','p','q','r','s','t','u','v','w',
        'x','y','z'],
        //设置画布大小
        'imageWidth' => 100,
        //设置画布高度
        'imageHight'=>40,
        //干扰点开启,true开启。false关闭
        'setPoint' => true,
        //干扰点个数
        'setPointCount'=>200,   
        //干扰线开启,true开启。false关闭
        'setLine' => true,
        //干扰线条数
        'setLineCount'=>3,
         ];
    }
    public static function craetCode(){

        //配置项加载
        $config = self::codeConfig();
        $configStrCount = count($config['codeStr']);
        //创建画布
        $image = imagecreatetruecolor($config['imageWidth'], $config['imageHight']);
        //1.创建画布背景色
        $imageBgColor = imagecolorallocate($image, 250, 255, 255);
        //2.背景色填充画布
        imagefill($image, 0, 0, $imageBgColor);
        //3.添加验证码
        $strCode = '';
        for($i=0;$i<4;$i++){
            $strtmp = $config['codeStr'][rand(0,$configStrCount-1)];
            //4.设置字体大小和颜色
            $fontColor = imagecolorallocate($image, rand(0,50),rand(0,50), rand(0,50));
            imagestring($image, 20, $i*20+10, $i*1+10,$strtmp, $fontColor);
            $strCode.= strtolower($strtmp);         
        }

        //5.存储session        
        session()->put('code',$strCode);

        //6.添加干扰点
        if ($config['setPoint']) {
            for($i=0;$i<$config['setPointCount'];$i++){
                $setPointColor = imagecolorallocate($image, rand(200,255), rand(200,255), rand(200,255));//干扰点颜色
                imagesetpixel($image, rand(1,$config['imageWidth']), rand(1,$config['imageHight']), $setPointColor);            
            }         
        }


        //7.添加干扰线
        if ($config['setLine']) {
            for($i=0;$i<$config['setLineCount'];$i++){
                $setLineColor = imagecolorallocate($image, rand(200,255), rand(200,255), rand(200,255));//干扰点颜色
                imageline($image, rand(0,$config['imageWidth']), rand(0,$config['imageHight']), rand(0,$config['imageWidth']), rand(0,$config['imageHight']), $setLineColor);           
            }            # code...
        }

        //8.输出图片验证码
        header("Content-Type:image/png");
        imagepng($image);
        //9.销毁画布
        imagedestroy($image);  
                    
    }
}


2.效果图

回复

使用道具 举报

2

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-1-1 13:17:15 | 显示全部楼层
????不是二维码,你弄的这个跟你标题有一分钱关系么
回复

使用道具 举报

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-1-1 13:17:31 | 显示全部楼层
现在的本科生都能识别出这种验证码了
回复

使用道具 举报

2

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-1-1 13:18:15 | 显示全部楼层
这是验证码,不是二维码。
回复

使用道具 举报

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-1-1 13:19:08 | 显示全部楼层
你管这叫二维码
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-1-1 13:19:28 | 显示全部楼层
找个厂子吧[捂脸]
回复

使用道具 举报

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-1 13:20:06 | 显示全部楼层
[流泪]现在小学生有Python课,他们都可以完成这种验证码的识别了,而且有些高中已经有人工智能课程了[捂脸][捂脸]
回复

使用道具 举报

1

主题

4

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-1-1 13:20:46 | 显示全部楼层
多读书
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-1-1 13:21:32 | 显示全部楼层
你管这叫二维码
回复

使用道具 举报

2

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-1-1 13:21:42 | 显示全部楼层
写错标题了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-15 18:30 , Processed in 0.344877 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表