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 图片上传代码
Sep 13 PHP
深入PHP curl参数的详解
Jun 17 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
php获取操作系统语言代码
Nov 04 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
thinkphp模板继承实例简述
Nov 26 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
php链式操作的实现方式分析
Aug 12 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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 远程关机操作的代码
2008/12/05 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
php中in_array函数用法探究
2014/11/25 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
python通过socket查询whois的方法
2015/07/18 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
大学生求职推荐信
2013/11/27 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
批评与自我批评总结
2014/10/17 职场文书
安全教育培训心得体会
2016/01/15 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python