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模板引擎SMARTY
Oct 09 PHP
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
PHP计数器的实现代码
Jun 08 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
Laravel 验证码认证学习记录小结
Dec 20 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 array_multisort() 函数的深入解析
2013/06/20 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python unittest模块用法实例分析
2018/05/25 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
python 内置函数汇总详解
2019/09/16 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
strstr()的简单实现
2013/09/26 面试题
2014年纳税评估工作总结
2014/12/23 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers