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 字符串分割和比较
Oct 06 PHP
PHP学习之整理字符串
Apr 17 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
对laravel in 查询的使用方法详解
Oct 09 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学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
js实现分页功能
2017/05/24 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
python爬虫的工作原理
2017/03/05 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
python时间日期操作方法实例小结
2020/02/06 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
综合办公室个人的自我评价
2013/12/22 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
职业规划实施方案
2014/06/10 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
党员年度个人总结
2015/02/14 职场文书
奖励通知
2015/04/22 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
使用pytorch实现线性回归
2021/04/11 Python