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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
模板引擎正则表达式调试小技巧
Jul 20 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 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模拟HTTP认证
2006/10/09 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php类的定义与继承用法实例
2015/07/07 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
python两种注释用法的示例
2020/10/09 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
主要的Ajax框架都有什么
2013/11/14 面试题
函授教育个人学习的自我评价
2013/12/31 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
加油口号大全
2014/06/13 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
pycharm代码删除恢复的方法
2021/06/26 Python