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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
php对微信支付回调处理的方法
Aug 23 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 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 获取select下拉列表框的值
2010/05/08 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
ext for eclipse插件安装方法
2008/04/27 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
如何基于python实现不邻接植花
2020/05/01 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
化学工程专业求职信
2014/08/10 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
2014年图书室工作总结
2014/12/09 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
民事代理词范文
2015/05/25 职场文书
党小组鉴定意见
2015/06/02 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
idea下配置tomcat避坑详解
2022/04/12 Servers