国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php密碼生成類實(shí)例

Original 2017-02-18 13:13:27 447
abstract:本文實(shí)例講述了php實(shí)現(xiàn)的密碼生成類及其應(yīng)用方法,分享給大家供大家參考。具體分析如下:一、php密碼生成類功能:1.可設(shè)定密碼長度。2.可設(shè)定要生成的密碼個(gè)數(shù),批量生成。3.可以指定密碼的規(guī)則,字母,數(shù)字,特殊字符等。二、用法:GeneratePassword.class.php類文件如下:<?php /** Generate Password class,根據(jù)

本文實(shí)例講述了php實(shí)現(xiàn)的密碼生成類及其應(yīng)用方法,分享給大家供大家參考。具體分析如下:

一、php密碼生成類功能:

1.可設(shè)定密碼長度。
2.可設(shè)定要生成的密碼個(gè)數(shù),批量生成。
3.可以指定密碼的規(guī)則,字母,數(shù)字,特殊字符等。

二、用法:

GeneratePassword.class.php類文件如下:

<?php
/** Generate Password class,根據(jù)指定規(guī)則生成password
*  Date:  2013-12-23
*  Author: fdipzone
*  Ver:  1.0
*
*  Func:
*  public batchGenerate 批量生成密碼
*  private generate   生成單個(gè)密碼
*  private getLetter   獲取字母 
*  private getNumber   獲取數(shù)字
*  private getSpecial  獲取特殊字符
*/
  
class GeneratePassword{ // class start
  
  // 密碼的規(guī)則 default
  private $_rule = array(
   'letter' => 1,
   'number' => 1,
   'special' => 1
  );
  
  private $_length = 8;         // 密碼長度
  private $_num = 1;          // 密碼數(shù)量
  private $_special = '!@#$%^&*()_+=-'; //允許的特殊字符
  
  /** 初始化
  * @param int  $length 密碼長度
  * @param int  $num   密碼數(shù)量
  * @param Array $rule  密碼規(guī)則
  * @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){ // 數(shù)量
      $this->_num = $num;
    }
  
    if(isset($special) && is_string($special) && $special!=''){ // 特殊字符
      $this->_special = $special;
    }
  
    if($rule){ // 規(guī)則
  
      $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;
  }
  
  /** 生成單個(gè)密碼
  * @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); // 隨機(jī)打亂
  
    $password = str_shuffle($force_pool. substr($pool, 0, $this->_length-strlen($force_pool))); // 再次隨機(jī)打亂
  
    return $password;
  }
  
  /** 字母 */
  private function getLetter(){
    $letter = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz';
    return $letter;
  }
  
  /** 數(shù)字 */
  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, // 必須含有數(shù)字
  'special' => 2 // 必須含有特殊字符
);
  
$special = '!@#$%_-';
  
$obj = new GeneratePassword(8, 10, $rule, $special);
$passwords = $obj->batchGenerate();
  
echo implode('<br>', $passwords);
?>

更多關(guān)于php密碼生成類實(shí)例請關(guān)注PHP中文網(wǎng)(www.miracleart.cn)其他文章!   


Release Notes

Popular Entries