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 相关文章推荐
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
php无限遍历目录示例
Feb 21 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
php防止用户重复提交表单
Nov 02 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
是否存在第一台收音机的说法
2021/03/01 无线电
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
js的对象与函数详解
2019/01/21 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
.NET笔试题(20个问题)
2016/02/02 面试题
介绍一下常见的木马种类
2014/11/15 面试题
社区反邪教工作方案
2014/06/16 职场文书
刘公岛导游词
2015/02/05 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
共青团员自我评价
2015/03/10 职场文书
婚宴来宾致辞
2015/07/28 职场文书
车辆管理制度范本
2015/08/05 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记