PHP基于GD2函数库实现验证码功能示例


Posted in PHP onJanuary 27, 2019

本文实例讲述了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基于GD2函数库实现验证码功能示例

PHP基于GD2函数库实现验证码功能示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
php编写一个简单的路由类
Apr 13 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
destoon之一键登录设置
Jun 21 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHP的PDO事务与自动提交
Jan 24 #PHP
PHP的PDO连接讲解
Jan 24 #PHP
PHP的PDO预定义常量讲解
Jan 24 #PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 #PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 #PHP
详解php伪造Referer请求反盗链资源
Jan 24 #PHP
PHP的mysqli_stat()函数讲解
Jan 23 #PHP
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
jquery移动节点实例
2015/01/14 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
Bootstrap实现翻页效果
2017/11/27 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
python实现k-means聚类算法
2018/02/23 Python
python使用生成器实现可迭代对象
2018/03/20 Python
老生常谈python中的重载
2018/11/11 Python
一个入门级python爬虫教程详解
2021/01/27 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
小学教师的个人自我鉴定
2013/10/24 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
就业协议书怎么填
2014/09/15 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
研究生个人学年总结
2015/02/14 职场文书
音乐之声观后感
2015/06/04 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书