利用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 相关文章推荐
简单采集了yahoo的一些数据
Feb 14 PHP
YII实现分页的方法
Jul 09 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
php简单截取字符串代码示例
Oct 19 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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连接Oracle数据库
2006/10/09 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
如何使用php输出时间格式
2013/08/31 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
jQuery事件用法详解
2016/10/06 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
浅谈sass在vue注意的地方
2017/08/10 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python实现K最近邻算法
2018/01/29 Python
python如何查看微信消息撤回
2018/11/27 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
django创建css文件夹的具体方法
2020/07/31 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
教师节促销方案
2014/03/22 职场文书
经典禁毒标语
2014/06/16 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python