php 密码生成类

黄舟
发布: 2017-02-18 09:12:43
原创
1627人浏览过

php 密码生成类

功能:

1.可设定密码长度。

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

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

立即学习PHP免费学习笔记(深入)”;

GeneratePassword.class.php

Blackink AI纹身生成
Blackink AI纹身生成

创建类似纹身的设计,生成独特纹身

Blackink AI纹身生成17
查看详情 Blackink AI纹身生成
<?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
    */
    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);
?>
登录后复制


 以上就是php 密码生成类的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号