生成随机字符串和验证码的类的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一些常用的正则表达式字符的一些转换
Jul 29 PHP
php 破解防盗链图片函数
Dec 09 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
php的XML文件解释类应用实例
Sep 22 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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使用wordwrap格式化文本段落的方法
2015/03/17 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
Node 代理访问的实现
2019/09/19 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
windows下python连接oracle数据库
2017/06/07 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
pytorch forward两个参数实例
2020/01/17 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
用python制作个视频下载器
2021/02/01 Python
体育专业学生自我评价范文
2014/01/17 职场文书
四年级评语大全
2014/04/21 职场文书
心得体会的写法
2014/09/05 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
二年级作文之动物作文
2019/11/13 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis