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 遍历XP文件夹下所有文件
Nov 27 PHP
php 方便水印和缩略图的图形类
May 21 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
Jul 01 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
php数组随机排序实现方法
Jun 13 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
php生成gif动画的方法
Nov 05 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 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
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python访问sqlserver示例
2014/02/10 Python
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Python自定义简单图轴简单实例
2018/01/08 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Python eval函数介绍及用法
2020/11/09 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
Python中的面向接口编程示例详解
2021/01/17 Python
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
Python面试题集
2012/03/08 面试题
大学生饮食配送创业计划书
2014/01/04 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
护士辞职信范文
2014/01/19 职场文书
日语专业求职信
2014/07/04 职场文书
政风行风评议整改方案
2014/09/15 职场文书
邀请书模板
2015/02/02 职场文书
健康教育主题班会
2015/08/14 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
Python echarts实现数据可视化实例详解
2022/03/03 Python