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 相关文章推荐
用php来检测proxy
Oct 09 PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 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(2)
2006/10/09 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
javascript 精粹笔记
2010/05/09 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
js实现旋转木马效果
2017/03/17 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
Djang中静态文件配置方法
2015/07/30 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python实现键盘控制鼠标移动
2020/11/27 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python SocketServer源码深入解读
2019/09/17 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
自我评价优秀范文分享
2013/11/30 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
公司承诺书怎么写
2014/05/24 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
Python绘画好看的星空图
2022/03/17 Python