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中遍历stdclass object的实现代码
Jun 09 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php代码审计比较有意思的例子
May 07 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
PDO::_construct讲解
Jan 27 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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
CentOS安装php v8js教程
2015/02/26 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
js调用flash的效果代码
2008/04/26 Javascript
异步加载script的代码
2011/01/12 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
RequireJS用法简单示例
2018/08/20 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
使用tensorflow实现线性svm
2018/09/07 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
C#实现启动一个进程
2016/10/01 面试题
学生安全教育材料
2014/02/14 职场文书
法学自荐信
2014/06/20 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书