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中for循环语句的几种变型
Nov 26 PHP
php 生成随机验证码图片代码
Feb 08 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
Zend studio文件注释模板设置方法
Sep 29 PHP
学习php开源项目的源码指南
Dec 21 PHP
php判断访问IP的方法
Jun 19 PHP
PHP下载文件的函数实例代码
May 18 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
php下的原生ajax请求用法实例分析
Feb 28 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
2020最新CPU的性能排名
2020/04/02 数码科技
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php多重接口的实现方法
2015/06/20 PHP
html读出文本文件内容
2007/01/22 Javascript
IE php关于强制下载文件的代码
2008/08/23 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
JavaScript中this详解
2015/09/01 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
js实现网页随机验证码
2020/10/19 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python Flask实现restful api service
2017/12/04 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
C#面试问题
2016/07/29 面试题
大学专科生推荐信范文
2013/11/23 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python