PHP自定义大小验证码的方法详解


Posted in PHP onJune 07, 2013
<?php
function vCode($num=4,$size=20, $width=0,$height=0){ 
        !$width && $width = $num*$size*4/5+5; 
        !$height && $height = $size + 10; 
        // 去掉了 0 1 O l 等 
            $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW"; 
            $code = ''; 
            for ($i=0; $i<$num; $i++){ 
                    $code.= $str[mt_rand(0, strlen($str)-1)]; 
            } 
            // 画图像 
            $im = imagecreatetruecolor($width,$height); 
            // 定义要用到的颜色 
            $back_color = imagecolorallocate($im, 235, 236, 237); 
            $boer_color = imagecolorallocate($im, 118, 151, 199); 
            $text_color = imagecolorallocate($im, mt_rand(0,200), mt_rand(0,120), mt_rand(0,120));             // 画背景 
        imagefilledrectangle($im,0,0,$width,$height,$back_color); 
            // 画边框 
            imagerectangle($im,0,0,$width-1,$height-1,$boer_color); 
            // 画干扰线 
            for($i=0;$i<5;$i++){ 
                    $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); 
                imagearc($im,mt_rand(-$width,$width),mt_rand(-$height,$height),mt_rand(30,$width*2),mt_rand(20,$height*2),mt_rand(0,360),mt_rand(0,360),$font_color); 
                } 
        // 画干扰点 
        for($i=0;$i<50;$i++){ 
                $font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); 
                imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$font_color); 
        } 
        // 画验证码 
        @imagefttext($im, $size , 0, 5, $size+3, $text_color, 'c://WINDOWS//Fonts//simsun.ttc',$code); 
        header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate"); 
        header("Content-type: image/png"); 
        imagepng($im); 
        imagedestroy($im); 
} 
?>

函数描述及例子:
<?
// 4个字符,大小为20
vCode(4,20);
?>
PHP 相关文章推荐
WINXP下apache+php4+mysql
Nov 25 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
php处理restful请求的路由类分享
Feb 27 PHP
php调用google接口生成二维码示例
Apr 28 PHP
PHP中的流(streams)浅析
Jul 02 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 PHP
laravel-admin的多级联动方法
Sep 30 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 #PHP
利用php获取服务器时间的实现代码
Jun 07 #PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 #PHP
PHP5常用函数列表(分享)
Jun 07 #PHP
深入理解php的MySQL连接类
Jun 07 #PHP
PHP之生成GIF动画的实现方法
Jun 07 #PHP
深入HTTP响应状态码速查表的详解
Jun 07 #PHP
You might like
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
php类自动加载器实现方法
2015/07/28 PHP
img标签中onerror用法
2009/08/13 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
求职推荐信范文
2013/12/01 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
商务考察邀请函范文
2014/01/21 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
开平碉楼导游词
2015/02/06 职场文书
教务处教学工作总结
2015/08/10 职场文书
设置IIS Express并发数
2022/07/07 Servers