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 相关文章推荐
PHP安装问题
Oct 09 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
PHP date函数常用时间处理方法
May 11 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
php使用json-schema模块实现json校验示例
Sep 28 PHP
laravel框架的安装与路由实例分析
Oct 11 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 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
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
js常用DOM方法详解
2017/02/04 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
js实现一个简易计算器
2020/03/30 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
js实现星星打分效果
2020/07/05 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
护理专业自我鉴定
2014/01/30 职场文书
继承公证书格式
2015/01/26 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python