加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 教程 > 正文

php密码生成类实例

发布时间:2022-06-22 09:01:48 所属栏目:教程 来源:互联网
导读:这篇文章主要介绍了php密码生成类,可实现根据要求生成多种格式密码的功能,是一款非常实用的PHP类文件,需要的朋友可以参考下 本文实例讲述了php实现的密码生成类及其应用方法,分享给大家供大家参考。具体分析如下: 一、php密码生成类功能: 1.可设定密码长
  这篇文章主要介绍了php密码生成类,可实现根据要求生成多种格式密码的功能,是一款非常实用的PHP类文件,需要的朋友可以参考下
 
  本文实例讲述了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  
    */
    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;  
        }  

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读