生成随机字符串和验证码的类的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 各种排序算法实现代码
Aug 20 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
php join函数应用
May 04 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
初识Laravel
Oct 30 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
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
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP类的封装与继承详解
2015/09/29 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
php实现URL加密解密的方法
2016/11/17 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python实现各种排序算法的代码示例总结
2015/12/11 Python
浅谈Python 对象内存占用
2016/07/15 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python登录系统界面实现详解
2019/06/25 Python
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
投标承诺书范本
2014/03/27 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
大一新生期末自我评价
2014/09/12 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
大学生入党自荐书
2015/03/05 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android