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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
一个SQL管理员的web接口
Oct 09 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 PHP
destoon之一键登录设置
Jun 21 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php把大写命名转换成下划线分割命名
Apr 27 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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使用eAccelerator的API开发详解
2013/06/09 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
农历与西历对照
2006/09/06 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
微信JS接口大全
2016/08/25 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
使用Python解析JSON数据的基本方法
2015/10/15 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
详解Python用户登录接口的方法
2019/04/17 Python
python之生产者消费者模型实现详解
2019/07/27 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python设计密码强度校验程序
2020/07/30 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
python实现登录与注册系统
2020/11/30 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
C语言面试题
2015/10/30 面试题
幼儿园家长评语
2014/02/10 职场文书
社区科普工作方案
2014/06/03 职场文书
大学英语专业求职信
2014/06/21 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
公务员年度考核评语
2014/12/31 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python