PHP密码生成管理源码,php密码生成类(附源码)
本节内容:
好用的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密码生成类(附源码)相关推荐
- php强制cookies,php Cookies操作类(附源码)
本cookies操作类的功能,包括: 1,保存,读取,更新,清除cookies数据. 2,可设置前缀. 3,强制超时控制. 4,cookies数据可以是字符串,数组,对象等. 1,PHP cookie ...
- 【实战】Spring生成beanName冲突的解决之道:附源码分析
一.问题描述 最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义.完全不同的表.不同的处理 ...
- ⭐️Python实用小工具之制作酷炫二维码(有界面、附源码)⭐️
镇楼图 文章目录 写在前面 制作二维码 安装myqr库 myqr.run()参数详解 制作普通二维码 制作黑白背景二维码 制作彩色背景二维码 制作大边长二维码 制作动态二维码 解析二维码 tkinte ...
- 基于Matlab生成车辆传感器惯性测量单元读数(附源码)
此示例演示如何从安装在地面车辆上的传感器生成惯性测量单元 (IMU) 读数.根据传感器的位置,IMU 加速度会有所不同. 一.创建轨迹 指定车辆的航点轨迹并使用计算车辆姿势. % Sampling r ...
- php 断点续传,php支持断点续传的文件下载类(附源码)
/** php下载类,支持断点续传 * Date: 2013-06-30 * Author: fdipzone * Ver: 1.0 * edit: ww.jbxue.com * Func: * do ...
- 原创:微信小程序源码解说:石头剪刀布(附源码下载)
我的博客:来源链接 昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了. JS: var numAi = 0 var timer ...
- 石头剪刀布代码android,微信小程序源码解说:石头剪刀布(附源码下载)
var numAi = 0 var timer Page({ data:{ //控制按钮是否可点击 btnState:false, //记录获胜次数 winNum:0, //中间的话"Ho~ ...
- 石头剪刀布php源码,原创:微信小程序源码解说:石头剪刀布(附源码下载)
昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了. JS: var numAi = 0 var timer Page({ da ...
- c语言 石头剪刀布的小程序,微信小程序源码解说:石头剪刀布(附源码下载)(示例代码)...
var numAi = 0 var timer Page({ data:{ //控制按钮是否可点击 btnState:false, //记录获胜次数 winNum:0, //中间的话"Ho~ ...
最新文章
- Oracle11g_同义词
- fopen和fopen_s用法的比较
- 两个坐标系进行了缩放平移后的变换关系
- 用 Python 在朋友圈中游遍全球
- zz Microsoft Chart Controls for Microsoft .NET Framework 3.5
- 无法在源表中获得一组稳定的行_行输出变压器的结构、符号及电路分析
- 【干货】从0到1打造企业数字化运营闭环白皮书.pdf(附下载链接)
- 05年的一个访谈记录
- HTML+CSS静态页面网页设计作业:我的家乡网站设计——我的家乡-莆仙(6页)
- 搜索引擎的原理以及倒排索引技术
- NAS与文件系统服务器比较,磁盘阵列与NAS服务器的比较
- Processor Architecture: CISC, RISC, VLIW
- Cydia怎样添加威锋源
- 海湾gst5000协议号_海湾GST5000主机基本操作
- 天生量化将才?理工科程序员 做量化投资优劣势分析
- UTF-8的编码规则
- Android开发之实时更新系统时间
- 传统C/S软件的断骨增高
- 文件服务器的配置实训报告,《服务器配置与调试实训报告》要点
- 国务院办公厅关于2014年部分节假日安排的通知
热门文章
- VA01创建SO的增强点MV45AFZZ的几点实际应用总结
- 你要知道动机何在吗?
- 如何让报表告别繁琐?简单操作实现报表联动!
- linux下python安装opencv库_Linux下怎么配置python和opencv
- mysql服务器性能剖析,高性能MySQL–服务器性能剖析
- python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...
- 计算机学校都有哪些怎么联系方式,计算机应用专业学校联系方式推荐
- 软件测试功能报告,软件功能测试报告
- mysql默认排序规则_mysql 字符集与排序规则的简单了解
- 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt