php实现验证码(字母+数字)

效果:


主要使用到 GD 库绘制验证码


主要路线:

需要用到:宽,高,字母,数字,字母数字混合,背景,背景颜色,迷惑点,迷惑线。

拟定方法:

function verify($width = 120,$height = 70,$num = 5)

1、准备画布

$image = imagecreatetruecolor($width,$height);


2、准备颜色

额外制定几个个方法(verify方法之外,便于背景颜色与字体颜色的调用);

(浅色方法)

function lightcolor($image)

{

return imagecolorallocate($image,mt_rand(130,255),mt_rand(130,255),mt_rand(130,255));

}

(深色方法)

function deepcolor($image)

{

return imagecolorallocate($image,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));

}

3、开始画

$string = '';

$str = '123456789abcdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ';

$string = substr(str_shuffle($str),0,5) // str_shuffle() 方法,用于打乱字符串。


//给背景颜色填充浅色

imagefilledrectangle($image,0,0,$width,$height,lightcolor($image));


//字母数字

for($i = 0; $i < $num; $i++){

//$x用于分隔,num为5,平均分为5份

$x = floor( $width/$num) * $i;

//$y避免字跑出去

$y = mt_rand(10,$height - 20);

imagechar($image,5,$x,$y,$string[$i],deepColor($image));

}

//迷惑线,迷惑点

for($i = 0; $i < $num ; $i++){

imagearc($image,mt_rand(10,$width),mt_rand(10,$height),mt_rand(10,$width),mt_rand(10,$height),mt_rand(0,10),mt_rand(0,270),deepcolor($image));

}

for($i = 0; $i < 50; $i++){

imagesetpixel($image,mt_rand(0,$width),mt_rand(0,$height),deepColor($image));

}

4、输出到浏览器

//指定输出类型

header('Content-type:image\png');


imagepng($image);

5、销毁资源

imagedestroy($image);


//验证用

return $string;




0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
花水木
作者分享
关于业务规范文档(spec)的思考(VibeCoding,写的太乱让 gpt 整理了一下)
6
Angular 学习--从RxJS到signals--用户中心。
3
OJ系统-毕设
19
#找伙伴# 毕设 项目 Java (补发)最近打算做一个OJ,拿来用作毕设的, 技术栈见下面。 目前已经搭好前后端的架子了。前端采用vben-admin框架、后端采用springboot Maven多模块(目前是想先做一下单体,后面微服务再扩充。) 项目现在放在咱们星球的gitlab仓库,大家登录就可以看到了,附个链接:张瑞鑫 · GitLab 希望找几个星球里感兴趣的小伙伴一起做一下,以做代学嘛。 近期更新的比较多一点,过两天我公司里面要上活了,可能就更新的慢一点,不过会一直更新代码的! 有感兴趣的小伙伴加我微信吧 Yuki9375,😁😉☺️
15
#找伙伴# #毕设 项目 Java 最近打算做一个OJ,拿来用作毕设的, 技术栈见下面。 目前已经搭好前后端的架子了。前端采用vben-admin框架、后端采用springboot Maven多模块(目前是想先做一下单体,后面微服务再扩充。) 项目现在放在咱们星球的gitlab仓库,大家登录就可以看到了,附个链接:http://www.codefather.cn/zhang.rx 希望找几个星球里感兴趣的小伙伴一起做一下,以做代学嘛。 近期更新的比较多一点,过两天我公司里面要上活了,可能就更新的慢一点,不过会一直更新代码的! 有感兴趣的小伙伴加我微信吧 Yuki9375,😁😉☺️😝
20
下载 APP