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 文件上传代码(限制jpg文件)
Jan 05 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php 数组使用详解 推荐
Jun 02 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
PHP异步调用socket实现代码
Jan 12 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
PHP自动生成表单代码分享
Jun 19 PHP
Laravel日志用法详解
Oct 09 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
php页面防重复提交方法总结
2013/11/25 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
介绍Python中的__future__模块
2015/04/27 Python
Python实现把数字转换成中文
2015/06/29 Python
使用Python实现简单的服务器功能
2017/08/25 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
OpenCV 边缘检测
2019/07/10 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
报考公务员诚信承诺书
2014/08/29 职场文书
办理收楼委托书范本
2014/10/09 职场文书
资产移交协议书
2016/03/24 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js