利用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 05 PHP
PHP中基本符号及使用方法
Mar 23 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 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/01 无线电
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
yii数据库的查询方法
2015/12/28 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
jQuery validate验证插件使用详解
2016/05/11 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
Python函数的周期性执行实现方法
2016/08/13 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
详解python读取image
2019/04/03 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
JVM是一个编译程序还是解释程序
2012/09/11 面试题
授权委托书怎么写
2014/04/03 职场文书
支教个人总结
2015/03/04 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技