利用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 相关文章推荐
PHP取整数函数常用的四种方法小结
Jul 05 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
PHP加密解密类实例分析
Apr 20 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
如何使用PHP给图片加水印
Oct 12 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
编程语言Python的发展史
2014/09/26 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
Python实现合并字典的方法
2015/07/07 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python实现名片管理器的示例代码
2019/12/17 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
实例代码讲解Python 线程池
2020/08/24 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
优秀企业获奖感言
2014/02/01 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
保证金退回承诺函格式
2015/01/21 职场文书