PHP 生成验证码【很简单三步就搞定】

PHP 生成验证码【很简单三步就搞定】

什么是验证码?
      是一种区分用户是计算机还是人的公共全自动程序,主要防止非法软件进行破坏
实现思路:
      好比你在用电脑画画,你要先有画纸才能进行绘画
第一步:
      设置画布大小和颜色
第二步:
      绘制干扰元素和验证码信息
第三部:
      在浏览器中加载画布
常用函数:

imagecreatetruecolor — 新建一个真彩色图像画布
imagecolorallocate — 为一幅图像分配颜色
imagefill — 画布填充
imagesetpixel — 画一个单点像素
imageline — 画一条线段
imagettftext — 用 TrueType 字体向图像写入文本 [将验证码字符写入画布中]
header(‘Content-type: image/jpeg’); 浏览器加载类型
imagejpeg — 输出图象到浏览器或文件。
array_merge — 合并一个或多个数组
count — 计算数组中的单元数目或对象中的属性个数
rand — 产生一个随机整数
range — 建立一个包含指定范围单元的数组

字体样式连接【阿里图标库】

代码实现 :

	//============== 设置画布大小和颜色=========
    $width = 200;
    $height = 50;
    $image = imagecreatetruecolor($width,$height); // 设置画布的大小
    $bjColor = imagecolorallocate($image,255,222,173);  // 设置画布背景色
    imagefill($image,0,0,$bjColor); // 填充画布
    // ============设置干扰元素=============
    // 设置点干扰元素
    for($a = 0;$a <100;$a++){
        $spotColor = imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255)); // 设置点元素颜色
        imagesetpixel($image,rand(0,$width),rand(0,$height),$spotColor);    // 绘制点元素
    }
    // 设置线干扰元素
    for($a = 0;$a < 20;$a++){
        $lineColor = imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));    // 设置线元素颜色
        imageline($image,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$lineColor); // 绘制线元素
    }
    // 设置验证码信息
    $coder = '';
    $coderCount = 4; // 验证码字符个数
    $coderAll = array_merge(range(2,9),range('a','z'),range('A','Z'));  // 生成验证字符码信息库
    $key = count($coderAll)-1;  // 统计共有多少元素信息
    for($a=0;$a<$coderCount;$a++){
        $coder .=$coderAll[rand(0,$key)];  // 随机选取$coderCount 个 字符
    }
    for($a=0;$a<$coderCount;$a++){
        $textColor = imagecolorallocate($image,rand(10,50),rand(10,60),rand(10,60));  // 设置验证码字符颜色
        imagettftext(  // 绘制验证码字符
            $image, // 绘制位置
            20, // 字体大小 
            rand(10,-10), // X 轴偏移角度
            30+40*$a, // 设置字符间隔
            rand(25,25), // Y 轴字体偏移角度
            $textColor, // 字体颜色
            __DIR__.'/./font/captcha.ttf',  // 字体样式【要下载下来引用即可】
            $coder[$a] // 验证码字符
        );
    }
    // =============生成验证码到浏览器===========
    header('Content-type: image/jpeg');  // 浏览器传送格式
    imagejpeg($image); // 输出到浏览器

在这里插入图片描述

只是基础知识,望大家多多指教。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值