PHP基于GD2函数库实现验证码功能示例
2019/6/30 16:15:34
本文主要是介绍PHP基于GD2函数库实现验证码功能示例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文实例讲述了PHP基于GD2函数库实现验证码功能。分享给大家供大家参考,具体如下:
在正式制作验证码之前要先补充点知识,PHP使用GD2函数库实现对各种图形图像的处理,所以我们制作验证码主要要使用到一些GD2函数库里的一些函数:
imagecreatetruecolor($width,$height)函数,主要用于创建画布,有2个参数width和height是必选的,代表你所要创建的画布的长和宽;
imagecolorallocate($image, $red, $green, $blue)函数,主要用于填充图像,第1个参数是你所创建的图像的标识符,后面3个参数是颜色的RGB设置;
imagefill($image, $x, $y, $color)函数,第一个函数是你创建的图像标识符,第2、3个参数$x、$y是左上角坐标,最后一个参数是你要填充颜色;
imagestring($image, $font, $x, $y, $string, $color)函数设置文字,且imagestring()
函数如果直接绘制中文字符串会出现乱码,如果要绘制中文字符串可以使用imagettftext()
函数;
imagepng($image[,$filename])函数以phg格式将图像输出到浏览器或者保存为文件,第1个参数为你创建的图像标识号,第2个参数为可选参数,你要保存文件的文件名;
imagesetpixel($image, $x, $y, $color)函数画单个像素点;
imageline($image, $x1, $y1, $x2, $y2, $color)函数画一条线段,$x1、$y1是线段是左上角坐标,$x2、$y2是线段的右下角坐标。
代码主要如下:
<?php //创建画布 $img = imagecreatetruecolor(100, 50); //创建颜色 $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); //画布填充颜色 imagefill($img, 0, 0, $white);//背景为白色 //生成随机验证码 $code = make(5); //设置文字 imagestring($img, 5, 10, 10, $code, $black);//黑字 //加入噪点干扰 for ($i = 0; $i <300; $i++){ imagesetpixel($img, rand(0, 100), rand(0, 100), $black); imagesetpixel($img, rand(0, 100), rand(0, 100), $green); } //加入线段干扰 for ($n = 0; $n <=1; $n++){ imageline($img, 0, rand(0, 40), 100, rand(0, 40), $black); imageline($img, 0, rand(0, 40), 100, rand(0, 40), $white); } //输出验证码 header("content-type: image/png");//告诉浏览器这个文件是一个png图片 imagepng($img); //销毁图片,释放内存 imagedestroy($img); //生成随机验证码的函数 function make($length){ $code = 'abcdefghijklmnopqrsruvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //str_shuffle()函数用于打乱字符串 return substr(str_shuffle($code), 0, $length); } ?>
实现效果如下图:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
这篇关于PHP基于GD2函数库实现验证码功能示例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28怎么把PHP程序打包?-icode9专业技术文章分享
- 2024-09-28怎么用Phar打包PHP程序?-icode9专业技术文章分享
- 2024-09-13手动在github上下载的mfpt包,怎么放到thinkphp5.0框架并正常使用-icode9专业技术文章分享
- 2024-09-05python的<class 'bytearray'>相当于php的哪个数据类型-icode9专业技术文章分享
- 2024-09-05php 导出银行卡号避免科学技术法的方法-icode9专业技术文章分享
- 2024-08-30什么样的php代码质量差被称为垃圾代码-icode9专业技术文章分享
- 2024-08-30用 PHP 调用拼多多的接口以获取订单状态消息的步骤方法和代码示例-icode9专业技术文章分享
- 2024-08-27phpunit单元测试框架的入门和使用方法介绍-icode9专业技术文章分享
- 2024-08-24PHP 中date("w") 周一是多少-icode9专业技术文章分享
- 2024-08-14thinkphp8.0获取域名或主机名方法-icode9专业技术文章分享