php密码生成类

php 密码生成类

功能:

1.可设定密码长度。

2.可设定要生成的密码个数,批量生成。

3.可以指定密码的规则,字母,数字,特殊字符等。

GeneratePassword.class.php

<?php
/** Generate Password class,根据指定规则生成password
*   Date:   2013-12-23
*   Author: fdipzone
*   Ver:    1.0
*
*   Func:
*   public  batchGenerate 批量生成密码
*   private generate      生成单个密码
*   private getLetter     获取字母
*   private getNumber     获取数字
*   private getSpecial    获取特殊字符
*/

class GeneratePassword{ // class start  

    // 密码的规则 default
    private $_rule = array(
                            'letter' => 1,
                            'number' => 1,
                            'special' => 1
                       );  

    private $_length = 8;                 // 密码长度
    private $_num = 1;                    // 密码数量
    private $_special = '!@#$%^&*()_+=-'; //允许的特殊字符  

    /** 初始化
    * @param int    $length  密码长度
    * @param int    $num     密码数量
    * @param Array  $rule    密码规则
    * @param String $special 允许的特殊字符
    */
    public function __construct($length=8, $num=1, $rule=array(), $special=''){  

        if(isset($length) && is_numeric($length) && $length>=4 && $length<=50){ // 长度
            $this->_length = $length;
        }  

        if(isset($num) && is_numeric($num) && $num>0 && $num<=100){ // 数量
            $this->_num = $num;
        }  

        if(isset($special) && is_string($special) && $special!=''){ // 特殊字符
            $this->_special = $special;
        }  

        if($rule){ // 规则  

            $t_rule = array();  

            if(isset($rule['letter']) && in_array($rule['letter'], array(1,2,3,4,5))){ // 1:可选用 2:必须 3:必须小写 4:必须大写 5:大小写都必须
                $t_rule['letter'] = $rule['letter'];
            }  

            if(isset($rule['number']) && in_array($rule['number'], array(1,2))){ // 1:可选用 2:必须
                $t_rule['number'] = $rule['number'];
            }  

            if(isset($rule['special']) && in_array($rule['special'], array(1,2))){ // 1:可选用 2:必须
                $t_rule['special'] = $rule['special'];
            }  

            if($t_rule){
                $this->_rule = $t_rule;
            }  

        }  

    }  

    /** 批量生成密码
    * @return Array
    */
    public function batchGenerate(){  

        $passwords = array();  

        for($i=0; $i<$this->_num; $i++){
            array_push($passwords, $this->generate());
        }  

        return $passwords;
    }  

    /** 生成单个密码
    * @return String
	查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/PHP/
    */
    private function generate(){  

        $password = '';
        $pool = '';
        $force_pool = '';  

        if(isset($this->_rule['letter'])){  

            $letter = $this->getLetter();  

            switch($this->_rule['letter']){
                case 2:
                    $force_pool .= substr($letter, mt_rand(0,strlen($letter)-1), 1);
                    break;  

                case 3:
                    $force_pool .= strtolower(substr($letter, mt_rand(0,strlen($letter)-1), 1));
                    $letter = strtolower($letter);
                    break;  

                case 4:
                    $force_pool .= strtoupper(substr($letter, mt_rand(0,strlen($letter)-1), 1));
                    $letter = strtoupper($letter);
                    break;  

                case 5:
                    $force_pool .= strtolower(substr($letter, mt_rand(0,strlen($letter)-1), 1));
                    $force_pool .= strtoupper(substr($letter, mt_rand(0,strlen($letter)-1), 1));
                    break;
            }  

            $pool .= $letter;  

        }  

        if(isset($this->_rule['number'])){  

            $number = $this->getNumber();  

            switch($this->_rule['number']){
                case 2:
                    $force_pool .= substr($number, mt_rand(0,strlen($number)-1), 1);
                    break;
            }  

            $pool .= $number;  

        }  

        if(isset($this->_rule['special'])){  

            $special = $this->getSpecial();  

            switch($this->_rule['special']){
                case 2:
                    $force_pool .= substr($special, mt_rand(0,strlen($special)-1), 1);
                    break;
            }  

            $pool .= $special;
        }  

        $pool = str_shuffle($pool); // 随机打乱  

        $password = str_shuffle($force_pool. substr($pool, 0, $this->_length-strlen($force_pool))); // 再次随机打乱  

        return $password;  

    }  

    /** 字母 */
    private function getLetter(){
        $letter = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz';
        return $letter;
    }  

    /** 数字 */
    private function getNumber(){
        $number = '1234567890';
        return $number;
    }  

    /** 特殊字符 */
    private function getSpecial(){
        $special = $this->_special;
        return $special;
    }  

} // class end  

?>

demo:

<?php
require 'GeneratePassword.class.php';  

$rule = array(
    'letter' => 5, // 必须含有大小写字母
    'number' => 2, // 必须含有数字
    'special' => 2 // 必须含有特殊字符
);  

$special = '!@#$%_-';  

$obj = new GeneratePassword(8, 10, $rule, $special);
$passwords = $obj->batchGenerate();  

echo implode('<br>', $passwords);
?>

源码下载地址:http://download.csdn.net/detail/fdipzone/6760311

作者:csdn博客 傲雪星枫

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, csdn
, 密码
, csdn博客
, 批量
, 生成
源码下载
php 生成随机密码、php生成密码、php 密码生成器、php 二维码生成类、php 缩略图生成类,以便于您获取更多的相关知识。

时间: 2024-12-02 13:14:26

php密码生成类的相关文章

java随机生成字符串(字符随机生成类 生成随机字符组合)_java

复制代码 代码如下: package com.phyl.password; import java.util.ArrayList;import java.util.Arrays;import java.util.Random;/** * 字符随机生成类 * @author ASUS * */public class PassWord {  /**  * 密码类型枚举  * @author ASUS  */ public static enum TYPE {  /**   * 字符型   */  

如何根据java源代码生成类图?

问题描述 如何根据java源代码生成类图? **我自己做了一个java模拟记事本,功能也比较齐全.但是要求画出类图,这个怎么画啊?我去百度上搜了,都不实用,总是遇到这样或那样的问题.请问应如何画这个类图,或者怎样由java代码生成类图?**

小巧的php文档生成类

在项目开发中发现对php的文档缺少管理,别人写了一个,功能不多 <?php/*** 类名: doc* 描述: 文档生成类* 其他: 可以对目录进行过滤,设置好源目录后,请用绝对路径指定生成目录,模式可调,模式* 1为常规类型,即以 斜线**开头,以*斜线 结束* 2为扩展类型,凡是 斜线*开头以*斜线 结束的部分都将成为文档的一部分*/class doc{ var $docdirname; var $docdir; /** * 函数名称: doc() * 函数功能: 构造 * 输入参数: non

轻量级的xml文档生成类

xml PHP代码:--------------------------------------------------------------------------------<?/** * 轻量级XML文档生成类(非dom) * author: q3boy <q3boy@sina.com> * version: v0.1 aplha * update: 2003/9/8 * 支持Element/CDATA/Declare/attribute/Comment,可选择是否包含换行和缩进

rss2生成类

rss <? php/**//* * @(#)Rss2Gen.inc.php (beta) 2005/2/19 * * exblog RSS2 生成类,实现了RSS2规范中的大部分内容. * * 使用方法请见本类底部(Rss2Gen类使用注释)信息. * * 本程序为免费程序,源代码使用者可任意更改(请勿用于商业用途),但请保留本版权信息! * * @author HexUzHoNG <hexuzhong@163.com> * @version beta-2, 2005-03-11 *

php 缩略图生成类:支持imagemagick及gd库两种处理

功能: 1.按比例缩小/放大 2.填充背景色 3.按区域裁剪 4.添加水印,包括水印的位置,透明度等 使用imagemagick/GD库实现,imagemagick地址:www.imagemagick.org 需要安装imagemagick,安装方法如下:点击查看 PicThumb.class.php <?php /** 缩略图生成类,支持imagemagick及gd库两种处理 * Date: 2013-07-15 * Author: fdipzone * Ver: 1.2 * * Func:

php根据表结构自动生成类属性

        php根据表结构自动生成类属性 <?php $table = $_GET['table']; $rs = $db->queryAll("SELECT column_name,column_type,column_comment,data_type FROM information_schema.`COLUMNS` WHERE `TABLE_NAME` LIKE '$table'"); $output = ''; foreach ($rs as $r) { /

PHP微信开发之二维码生成类

  这篇文章主要介绍了PHP微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下 ? /** * Created by PhpStorm. * User: bin * Date: 15-1-16 * Time: 上午9:48 */ namespace HomeCommon; // 微信处理类 set_time_limit(30); class Weixin{ //构造方法 static $qrcode_url = "https://api.weixi

php实现的RSS生成类实例

  php实现的RSS生成类实例          这篇文章主要介绍了php实现的RSS生成类,实例分析了RSS生成类的原理.定义与使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php实现的RSS生成类.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43