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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
php搜索文件程序分享
Oct 30 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 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常用函数汇总
2014/12/17 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
用Python shell简化开发
2018/08/08 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
老师自我鉴定范文
2013/12/25 职场文书
投标承诺书怎么写
2014/05/24 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
Mysql 文件配置解析介绍
2022/05/06 MySQL