加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:php密码生成类实例

发布时间:2020-12-13 02:02:49 所属栏目:PHP教程 来源:网络整理
导读:《php密码生成类实例》要点: 本文介绍了php密码生成类实例,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php实现的暗码生成类及其应用方法,供大家参考研究.具体分析如下: PHP学习 一、php暗码生成类功能: 1.可设定暗码长度. 2.可设定

《php密码生成类实例》要点:
本文介绍了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'],2))){ // 1:可选用 2:必须 
        $t_rule['number'] = $rule['number']; 
      } 
 
      if(isset($rule['special']) && in_array($rule['special'],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,1)); 
          $letter = strtolower($letter); 
          break; 
 
        case 4: 
          $force_pool .= strtoupper(substr($letter,1)); 
          $letter = strtoupper($letter); 
          break; 
 
        case 5: 
          $force_pool .= strtolower(substr($letter,1)); 
          $force_pool .= strtoupper(substr($letter,1)); 
          break; 
      } 
 
      $pool .= $letter; 
    } 
    if(isset($this->_rule['number'])){ 
 
      $number = $this->getNumber(); 
 
      switch($this->_rule['number']){ 
        case 2: 
          $force_pool .= substr($number,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,strlen($special)-1),1); 
          break; 
      } 
      $pool .= $special; 
    } 
 
    $pool = str_shuffle($pool); // 随机打乱 
 
    $password = str_shuffle($force_pool. substr($pool,$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); 
?> 

本文完整源码可点击此处本站下载.

相信本文所述对大家的C#程序设计有必定的借鉴价值.

《php密码生成类实例》是否对您有启发,欢迎查看更多与《php密码生成类实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

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

    推荐文章
      热点阅读