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.MVC的模板标签系统(二)
Sep 05 PHP
桌面中心(二)数据库写入
Oct 09 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
浅析iis7.5安装配置php环境
May 10 PHP
php判断用户是否手机访问代码
Jun 08 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
Laravel 类和接口注入相关的代码
Oct 15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
关于页面优化和伪静态
2009/10/11 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php静态文件生成类实例分析
2015/01/03 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
python自动化之Ansible的安装教程
2019/06/13 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
django创建超级用户过程解析
2019/09/18 Python
python全局变量引用与修改过程解析
2020/01/07 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
咖啡蛋糕店创业计划书
2014/01/28 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
2014年母亲节寄语
2014/05/07 职场文书
微笑服务演讲稿
2014/05/13 职场文书
语文教研活动总结
2014/07/02 职场文书
电子商务专业求职信
2014/07/10 职场文书