本节内容:

好用的php 密码生成类。

访代码实现的功能:

1,可设定密码长度。

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

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

1,密码生成类文件 GeneratePassword.class.php 代码示例:

/** Generate Password class,根据指定规则生成password

*   Date:   2013-12-23

*   Author: fdipzone

*   Ver:    1.0

*   edit:www.#

*   Func:

*   public  batchGenerate 批量生成密码

*   private generate      生成单个密码

*   private getLetter     获取字母

*   private getNumber     获取数字

*   private getSpecial    获取特殊字符

*/

class GeneratePassword{ // class s

tart

// 密码的规则 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_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

?>

2,演示代码 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('
', $passwords);

?>

附,php密码生成类的源码下载地址

PHP密码生成管理源码,php密码生成类(附源码)相关推荐

  1. php强制cookies,php Cookies操作类(附源码)

    本cookies操作类的功能,包括: 1,保存,读取,更新,清除cookies数据. 2,可设置前缀. 3,强制超时控制. 4,cookies数据可以是字符串,数组,对象等. 1,PHP cookie ...

  2. 【实战】Spring生成beanName冲突的解决之道:附源码分析

    一.问题描述 最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义.完全不同的表.不同的处理 ...

  3. ⭐️Python实用小工具之制作酷炫二维码(有界面、附源码)⭐️

    镇楼图 文章目录 写在前面 制作二维码 安装myqr库 myqr.run()参数详解 制作普通二维码 制作黑白背景二维码 制作彩色背景二维码 制作大边长二维码 制作动态二维码 解析二维码 tkinte ...

  4. 基于Matlab生成车辆传感器惯性测量单元读数(附源码)

    此示例演示如何从安装在地面车辆上的传感器生成惯性测量单元 (IMU) 读数.根据传感器的位置,IMU 加速度会有所不同. 一.创建轨迹 指定车辆的航点轨迹并使用计算车辆姿势. % Sampling r ...

  5. php 断点续传,php支持断点续传的文件下载类(附源码)

    /** php下载类,支持断点续传 * Date: 2013-06-30 * Author: fdipzone * Ver: 1.0 * edit: ww.jbxue.com * Func: * do ...

  6. 原创:微信小程序源码解说:石头剪刀布(附源码下载)

    我的博客:来源链接 昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了. JS: var numAi = 0 var timer ...

  7. 石头剪刀布代码android,微信小程序源码解说:石头剪刀布(附源码下载)

    var numAi = 0 var timer Page({ data:{ //控制按钮是否可点击 btnState:false, //记录获胜次数 winNum:0, //中间的话"Ho~ ...

  8. 石头剪刀布php源码,原创:微信小程序源码解说:石头剪刀布(附源码下载)

    昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了. JS: var numAi = 0 var timer Page({ da ...

  9. c语言 石头剪刀布的小程序,微信小程序源码解说:石头剪刀布(附源码下载)(示例代码)...

    var numAi = 0 var timer Page({ data:{ //控制按钮是否可点击 btnState:false, //记录获胜次数 winNum:0, //中间的话"Ho~ ...

最新文章

  1. Oracle11g_同义词
  2. fopen和fopen_s用法的比较
  3. 两个坐标系进行了缩放平移后的变换关系
  4. 用 Python 在朋友圈中游遍全球
  5. zz Microsoft Chart Controls for Microsoft .NET Framework 3.5
  6. 无法在源表中获得一组稳定的行_行输出变压器的结构、符号及电路分析
  7. 【干货】从0到1打造企业数字化运营闭环白皮书.pdf(附下载链接)
  8. 05年的一个访谈记录
  9. HTML+CSS静态页面网页设计作业:我的家乡网站设计——我的家乡-莆仙(6页)
  10. 搜索引擎的原理以及倒排索引技术
  11. NAS与文件系统服务器比较,磁盘阵列与NAS服务器的比较
  12. Processor Architecture: CISC, RISC, VLIW
  13. Cydia怎样添加威锋源
  14. 海湾gst5000协议号_海湾GST5000主机基本操作
  15. 天生量化将才?理工科程序员 做量化投资优劣势分析
  16. UTF-8的编码规则
  17. Android开发之实时更新系统时间
  18. 传统C/S软件的断骨增高
  19. 文件服务器的配置实训报告,《服务器配置与调试实训报告》要点
  20. 国务院办公厅关于2014年部分节假日安排的通知

热门文章

  1. VA01创建SO的增强点MV45AFZZ的几点实际应用总结
  2. 你要知道动机何在吗?
  3. 如何让报表告别繁琐?简单操作实现报表联动!
  4. linux下python安装opencv库_Linux下怎么配置python和opencv
  5. mysql服务器性能剖析,高性能MySQL–服务器性能剖析
  6. python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...
  7. 计算机学校都有哪些怎么联系方式,计算机应用专业学校联系方式推荐
  8. 软件测试功能报告,软件功能测试报告
  9. mysql默认排序规则_mysql 字符集与排序规则的简单了解
  10. 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt