利用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文件
Jan 04 PHP
PHP Token(令牌)设计
Mar 15 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 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
PHP安全编程之加密功能
2006/10/09 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
node.js入门教程
2014/06/01 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
vue router demo详解
2017/10/13 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
银行柜员应聘推荐信范文
2013/11/24 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
大二学年个人总结
2015/03/03 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
大学生入党自传2015
2015/06/26 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
mysql自增长id用完了该怎么办
2022/02/12 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技