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字符串截取问题
Nov 28 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
基于php权限分配的实现代码
Apr 28 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP中命名空间的使用例子
Mar 22 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
PHP使用QR Code生成二维码实例
Jul 07 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设计模式 Strategy(策略模式)
2011/06/26 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
新页面打开实际尺寸的图片
2006/08/25 Javascript
使用Modello编写JavaScript类
2006/12/22 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
Python深度优先算法生成迷宫
2018/01/22 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
研究生毕业鉴定
2014/01/29 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
工地安全质量标语
2014/06/07 职场文书
空气环保标语
2014/06/12 职场文书
离职证明标准格式
2014/09/15 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫