生成随机字符串和验证码的类的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中文字母数字验证码实现代码
Apr 25 PHP
php小偷相关截取函数备忘
Nov 28 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
Yii实现微信公众号场景二维码的方法实例
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
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
php日期操作技巧小结
2016/06/25 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
IE bug table元素的innerHTML
2010/01/11 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
js+css实现打字效果
2020/06/24 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
vue v-model的用法解析
2020/10/19 Javascript
Python 错误和异常小结
2013/10/09 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python模拟登录12306的方法
2014/12/30 Python
Python打印斐波拉契数列实例
2015/07/07 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python 中如何写注释
2020/08/28 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
中国文明网签名寄语
2014/01/18 职场文书
教师节演讲稿
2014/05/06 职场文书
经理助理岗位职责
2015/02/02 职场文书
倡议书范文大全
2015/04/28 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers
MySQL存储过程及语法详解
2022/08/05 MySQL