[PHP] 网页验证码的实现
来源:互联网 发布:白鹿原小说败笔 知乎 编辑:程序博客网 时间:2024/06/05 00:31
验证码的作用是区分人与机器。防止恶意注册、留言等。
首先我们先创建一个画布。用来存放验证码。
画布生成为100 × 30 px大小的图片,并把它由默认的黑色改成白色。
然后利用for循环设置随机的四个数字作为验证码
如果想增加点难度让机器更难识别验证码,可以使用大小写字母加数字的方式。
注意事项:控制好数字的大小和分布,避免重叠或者显示不全。
然后我们利用imagesetpixel 函数增加干扰元素 - 点。使机器更难识别验证码。
接下来我们还可以在验证码上添加一些干扰元素 - 线。
这里要特别说明一下函数 imageline() , 中间有四个坐标参数,因为是两点构成一条直线, xy坐标为一个点, 所以参数为四个。
注意事项:输出图片之前,一定要提前输出图片的 header 信息。
数字效果图 :
数字+字母效果图:
首先我们先创建一个画布。用来存放验证码。
画布生成为100 × 30 px大小的图片,并把它由默认的黑色改成白色。
$image = imagecreatetruecolor(100,30); // 创建画布,默认为黑色 $white = imagecolorallocate($image,255,255,255); //白色imagefill( $image,0,0,$white ); //把画布添加成白色
然后利用for循环设置随机的四个数字作为验证码
for($i=0;$i<4;$i++){$size = 6; //字体大小$black = imagecolorallocate($image,0,0,0); //字体黑色$rand_size = mt_rand(0,9); //随机数字$x=$i*25+mt_rand(5,10); //宽度$y=mt_rand(5,10); //高度imagestring($image,$size,$x,$y,$rand_size,$black); }
如果想增加点难度让机器更难识别验证码,可以使用大小写字母加数字的方式。
for($i=0;$i<4;$i++){$size = 6;$x = $i*25+mt_rand(5,10);$y = mt_rand(5,10);$sizi_color = imagecolorallocate($image,mt_rand(80,220),mt_rand(80,220),mt_rand(80,220));$char = join("",array_merge(range('a','z'),range('A','Z'),range(0,9))); //把所有数组转换成字符串$char = str_shuffle($char); //随机打乱字符串$char = substr($char,0,1); //取其中一个字符串imagestring($image,$size,$x,$y,$char,$sizi_color);}
注意事项:控制好数字的大小和分布,避免重叠或者显示不全。
然后我们利用imagesetpixel 函数增加干扰元素 - 点。使机器更难识别验证码。
for($k=0;$k<200;$k++){$rand_color = imagecolorallocate($image,mt_rand(50,200),mt_rand(50,200),mt_rand(50,200));imagesetpixel($image,mt_rand(1,99),mt_rand(1,29),$rand_color);}
接下来我们还可以在验证码上添加一些干扰元素 - 线。
for($n=0;$n<5;$n++){$line_color = imagecolorallocate($image,mt_rand(80,220),mt_rand(80,220),mt_rand(80,220));imageline($image,mt_rand(1,99),mt_rand(1,29),mt_rand(1,99),mt_rand(1,29),$line_color);}
这里要特别说明一下函数 imageline() , 中间有四个坐标参数,因为是两点构成一条直线, xy坐标为一个点, 所以参数为四个。
header('content-type:image/png');//设置文件输出格式imagepng( $image ); //以png格式输出$image图像imagedestroy( $image ); //销毁图像
注意事项:输出图片之前,一定要提前输出图片的 header 信息。
数字效果图 :
数字+字母效果图:
阅读全文
1 0
- [PHP] 网页验证码的实现
- 网页验证码的实现
- PHP验证码的实现
- php验证码的实现
- PHP验证码的实现
- PHP的验证码实现
- JAVA网页图片验证码的实现
- 【php】php验证码的简单实现
- PHP实现验证码的实现
- 图片格式的PHP验证码的实现
- .net实现网页验证码
- Java实现网页验证码
- java网页验证码实现
- 网页验证码简单实现
- php实现验证码
- PHP实现验证码
- PHP实现验证码
- PHP实现验证码
- MySQl数据库-批量添加数据的两种方法
- Java排序[理解]+优化冒泡+二分查找
- 我的XML初学笔记
- Java版飞机订票系统
- ShowModal和Show的区别
- [PHP] 网页验证码的实现
- 设置文本与图片的对其方式,元素的隐藏
- 递归及尾递归优化
- MySql基于GTID主从复制的搭建
- mysql 单表索引优化案例
- Eclipse:启用代码自动补全功能
- 分拆素数和
- 文档编写
- 进程控制 (二) & Others