生成随机字符串和验证码的类的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压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
thinkPHP分页功能实例详解
May 05 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 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脚本的10个技巧(3)
2006/10/09 PHP
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php数组查找函数总结
2014/11/18 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
举例讲解Python装饰器
2020/12/24 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
酒店保安领班职务说明书
2014/03/04 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android