利用php生成验证码


Posted in PHP onFebruary 23, 2017

话不多说,请看代码:

<?php 
/**
 * php生成验证码
 * @param $width 画布宽
 * @param $height 画布高
 * @param $vcodelen 验证码长度
 * @param $pointnum 干扰像素点数量
 * @param $linenum 干扰线条数量
 *
 * 思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。
 */
 $width = 100;
 $height = 30;
 $vcodelen = 4;
 $pointnum = 200;
 $linenum = 3;
 // 创建画布
 $image = imagecreatetruecolor($width, $height);
 // 创建色块
 $bgcolor = imagecolorallocate($image, 255, 255, 255);
 // 填充画布背景色
 imagefill($image, 0, 0, $bgcolor);
 // 验证码内容
 for ($i=0; $i < $vcodelen; $i++) { 
  // 字体大小
  $fontsize = 5;
  // 字体颜色,颜色在限定范围内随机
  $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  $data = 'abcdefghijklmnopqrstuvwxyz0123456789';
  // 验证码内容在以上字符串内随机截取
  $fontcontent = substr($data, rand(0,strlen($data)),1);
  // 字符串显示位置
  $x = ($i*$width/4)+rand(5,15);
  $y = rand(5,10);
  // 字符串填充图片
  // imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件)
  imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
  // imagettftext($image, $fontsize, 0, $x, $y, $fontcolor, '/font/Geneva.dfont', $fontcontent);
 }
 // 干扰像素点
 for ($i=0; $i < $pointnum; $i++) { 
  $pointcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  // 画布填充像素点函数
  imagesetpixel($image, rand(0,$width), rand(0,$height), $pointcolor);
 }
 // 干扰线条
 for ($i=0; $i < $linenum; $i++) { 
  $linecolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  // 画布填充线条函数
  imageline($image, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $linecolor);
 }
 // 图片输出格式
 header('content-type: image/png');
 // 输出验证码图片
 imagepng($image);
 // 销毁画布
 imagedestroy($image);
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
?繁体转换的class
Oct 09 PHP
一些常用的php简单命令代码集锦
Sep 24 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
Jun 23 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
php实现base64图片上传方式实例代码
Feb 22 #PHP
php中实现字符串翻转的方法
Feb 22 #PHP
php生成图片缩略图功能示例
Feb 22 #PHP
php图形jpgraph操作实例分析
Feb 22 #PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 #PHP
php可变长参数处理函数详解
Feb 22 #PHP
php操作access数据库的方法详解
Feb 22 #PHP
You might like
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
跟老齐学Python之开始真正编程
2014/09/12 Python
Python实现二分法算法实例
2015/02/02 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
仓库管理制度
2014/01/21 职场文书
元旦联欢会感言
2014/03/04 职场文书
工业设计专业自荐书
2014/06/05 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
高三英语教学反思
2016/03/03 职场文书
高一作文之暖冬
2019/11/09 职场文书
Python集合set()使用的方法详解
2022/03/18 Python