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 输出简单动态WAP页面
Jun 09 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php如何连接sql server
Oct 16 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 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
解析argc argv在php中的应用
2013/06/24 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
js实现微信聊天效果
2020/08/09 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
Python切片用法实例教程
2014/09/08 Python
python根据京东商品url获取产品价格
2015/08/09 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
机械系毕业生求职信
2014/05/28 职场文书
大学生简历求职信
2014/06/24 职场文书
教师求职简历自我评价
2015/03/10 职场文书