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作的文本留言本的例子(二)
Oct 09 PHP
PHP面向对象概念
Nov 06 PHP
解析php中的escape函数
Jun 29 PHP
Yii学习总结之安装配置
Feb 22 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
浅谈PHP中的
Apr 23 PHP
thinkPHP模板算术运算相关函数用法分析
Jul 12 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
php微信小程序解包过程实例详解
Mar 31 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
生成静态页面的PHP类
2006/11/25 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
寄语学生的话
2014/04/10 职场文书
运动会方队口号
2014/06/07 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python