生成随机字符串和验证码的类的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 isset()与empty()的使用区别详解
Aug 29 PHP
php URL跳转代码 减少外链
Jun 25 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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
杏林同学录(九)
2006/10/09 PHP
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python列表的切片实例讲解
2019/08/20 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
Python列表推导式实现代码实例
2020/09/09 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
allbeauty美国:英国在线美容店
2019/03/11 全球购物
分公司经理任命书
2014/06/05 职场文书
机械专业求职信范文
2014/07/15 职场文书
工作检讨书怎么写
2014/10/10 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Python Numpy之linspace用法说明
2021/04/17 Python
浅谈Redis缓冲区机制
2022/06/05 Redis