PHP利用GD库生成验证码

PHP利用GD库生成验证码


<?php
check_code();

function check_code($width = 100, $height = 50, $num = 4, $type = 'jpeg'){
    #生成画布
    $img = imagecreate($width,$height);
    #创建空字符串
    $string = '';
    #生成num个字符
    for ($i = 0; $i < $num; $i++){
        #生成随机数看生成数字还是大小写字母
        $rand = mt_rand(0,2);
        switch ($rand){
            case 0:
                #随机生成数字的ascii值
                $ascii = mt_rand(48, 57); # 0-9
                break;
            case 1:
                #随机生成大写字母的ascii值
                $ascii = mt_rand(65, 90); # A-Z
                break;
            case 2:
                #随机生成小写字母的ascii值
                $ascii = mt_rand(97, 122); # a-z
                break;
        }
        #将生成的num个字符拼接起来
        $string .= sprintf("%c",$ascii);
    }
    #随机生成浅色背景
    imagefilledrectangle($img,0,0,$width,$height,randBg($img));
    #随机生成深色点干扰用户
    for ($i = 0; $i < 50; $i++){
        imagesetpixel($img, mt_rand(0, $width),mt_rand(0, $height), randPix($img));
    }
    #讲字符打印在画布上
    for ($i = 0; $i < $num; $i++){
        $x = floor($width/$num) * $i + 2;
        $y = mt_rand(0, $height - 15);

        imagechar($img,5, $x, $y,$string[$i], randPix($img));
    }
    #类型
    $func = 'image'.$type;
    #返回的类型
    $header = 'Content-type:image/'.$type;

    if(function_exists($func)){
        header($header);
        $func($img);
    }else{
        echo '图片类型不支持';
    }
    #销毁画布
    imagedestroy($img);
    #返回
    return $string;
}
//浅色背景
function randBg($img){
    return imagecolorallocate($img,mt_rand(130, 255),mt_rand(130, 255), mt_rand(130, 255));
}
//深色的字或者点干扰元素
function randPix($img) {
    return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值