生成随机字符串和验证码的类的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 相关文章推荐
cache_lite试用
Feb 14 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
简单实现php上传文件功能
Sep 21 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
javascript prototype 原型链
2009/03/12 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
React组件refs的使用详解
2018/02/09 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python中threading超线程用法实例分析
2015/05/16 Python
django实现日志按日期分割
2020/05/21 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
计算机专业职业规划
2014/02/28 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
关于感恩的作文
2019/08/26 职场文书