生成随机字符串和验证码的类的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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
Jun 25 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
php分页查询的简单实现代码
Mar 14 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php读取mysql的简单实例
2014/01/15 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
彻底理解Python list切片原理
2017/10/27 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
理解python中生成器用法
2017/12/20 Python
python 异或加密字符串的实例
2018/10/14 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
python如何随机生成高强度密码
2020/08/19 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
应聘教师推荐信
2013/10/31 职场文书
代办社保委托书范文
2014/10/06 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
新党章的学习心得体会
2014/11/07 职场文书
军事理论课感想
2015/08/11 职场文书
《正比例》教学反思
2016/02/23 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js