利用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中数据的批量导入(csv文件)
Oct 09 PHP
一个可以找出源代码中所有中文的工具
Oct 25 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
探讨如何把session存入数据库
Jun 07 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
PHP ADODB实现事务处理功能示例
May 25 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
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
accesskey 提交
2006/06/26 Javascript
永不消失的title提示代码
2007/02/15 Javascript
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
js实现扫雷源代码
2020/11/27 Javascript
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python3 实现调用串口功能
2019/12/26 Python
如何利用python 读取配置文件
2021/01/06 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
品质标语大全
2014/06/21 职场文书
2016猴年春节问候语
2015/11/11 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
Python使用scapy模块发包收包
2021/05/07 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript