生成随机字符串和验证码的类的PHP实例


Posted in PHP onDecember 24, 2013

网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个。

索性自己搞一个吧。

开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_check_image(),输出图像直接调用后面的,session()取验证码时直接get_code()就ok,顺带提下使用session时必须将session_star()放在最前面。

代码如下:

<?php
class RandCheckCode
{
        /*函数名称:get_code()
        *作用:取得随机字符串
        * 参数:
        1、(int)$length = 32 #随机字符长度
        2、(int)$mode = 0    #随机字符类型,
        0为大小写英文和数字,1为数字,2为小写字母,3为大写字母,
        4为大小写字母,5为大写字母和数字,6为小写字母和数字
        *返回:取得的字符串
        */
        function get_code($length=32,$mode=0)//获取随机验证码函数
        {
                switch ($mode)
                {
                        case '1':
                                $str='123456789';
                                break;
                        case '2':
                                $str='abcdefghijklmnopqrstuvwxyz';
                                break;
                        case '3':
                                $str='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
                                break;
                        case '4':
                                $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
                                break;
                        case '5':
                                $str='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
                                break;
                        case '6':
                                $str='abcdefghijklmnopqrstuvwxyz1234567890';
                                break;
                        default:
                                $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
                                break;
                }
                $checkstr='';
                $len=strlen($str)-1;
                for ($i=0;$i<$length;$i++)
                {
                        //$num=rand(0,$len);//产生一个0到$len之间的随机数
                        $num=mt_rand(0,$len);//产生一个0到$len之间的随机数
                        $checkstr.=$str[$num];                       
                }
                return $checkstr;
        }
/**     函数名称:create_check_image()
        函数作用:产生一个校验码的图片
        参    数:$checkcode:校验码字符串
        返 回 值:返回该图片
*/
        function create_check_image($checkcode)//产生一个
        {
                $im=imagecreate(65,22);//产生一个图片
                $black=imagecolorallocate($im,0,0,0);//背景颜色
                $white=imagecolorallocate($im,255,255,255);//前景颜色
                $gray=imagecolorallocate($im,200,200,200);
                imagefill($im,30,30,$gray);//在$im图像的坐标30,30(图像左上角为0,0)处用$gray 颜色执行区域填充(即与30,30点颜色相同且相邻的点都会被填充)
                imagestring($im,5,8,3,$checkcode,$white);//用$white颜色将字符串$checkcode画到$im 所代表的图像的8,3坐标处(这是字符串左上角坐标,整幅图像的左上角为0,0),5是字体大小, 字体只能是1,2,3,4或5,使用内置字体
                for ($i=0;$i<120;$i++)
                {
                        $randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
                        imagesetpixel($im,rand()%70,rand()%30,$randcolor);//在$im图象上用$randcolor颜色在(rand()%70,rand()%30)坐标(图像左上角为0,0)上画一个点
                }
                header("Content-type:image/png");
                imagepng($im);//以PNG格式将图像输出到浏览器或文件
                imagedestroy($im);//销毁图像$im
        }
}
/*
$randcode=new RandCheckCode();
$checkstring=$randcode->get_code(5,7);
$image=$randcode->create_check_image($checkstring);
echo $image;
*/

?>
PHP 相关文章推荐
有关PHP中MVC的开发经验分享
May 17 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
php递归实现无限分类的方法
Jul 28 PHP
php字符串的替换,分割和连接方法
May 23 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
php 浮点数比较方法详解
May 05 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
php下载excel无法打开的解决方法
Dec 24 #PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 #PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 #PHP
phpexcel导入excel数据使用方法实例
Dec 24 #PHP
php生成excel列序号代码实例
Dec 24 #PHP
php jquery 多文件上传简单实例
Dec 23 #PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 #PHP
You might like
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
求职自荐书范文
2013/12/04 职场文书
办公室前台岗位职责
2014/01/04 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
家长给孩子的评语
2014/01/30 职场文书
高中军训感言500字
2014/02/24 职场文书
财务工作个人总结
2015/02/27 职场文书
实施意见格式范本
2015/06/05 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
Python日志模块logging用法
2022/06/05 Python