利用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 相关文章推荐
PHP5函数小全(分享)
Jun 06 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
PHP的引用详解
Feb 22 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
PHP类的封装与继承详解
Sep 29 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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 无限分类的树类代码
2009/12/03 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
js 单引号 传递方法
2009/06/22 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
Python fileinput模块使用实例
2015/05/28 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
Python学习之os模块及用法
2020/06/03 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
食品行业求职人的自我评价
2014/01/19 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android