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 文章采集正则代码
Dec 28 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
php导入导出excel实例
Oct 25 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
Yii框架常见缓存应用实例小结
Sep 09 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
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
动态表格Table类的实现
2009/08/26 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python超简单解决约瑟夫环问题
2015/05/12 Python
python中的编码知识整理汇总
2016/01/26 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
学校安全工作制度
2014/01/19 职场文书
营销团队口号
2014/06/06 职场文书
超强台风观后感
2015/06/09 职场文书
运动会新闻报道稿
2015/07/22 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电