大佬教程收集整理的这篇文章主要介绍了php密码生成类实例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了php实现的密码生成类及其应用方法,分享给大家供大家参考。具体分析如下:
1.可设定密码长度。 2.可设定要生成的密码个数,批量生成。 3.可以指定密码的规则,字母,数字,特殊字符等。
Generatepassword.class.php类文件如下:
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;
}
$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'];
}
/** 批量生成密码
/** 生成单个密码
@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'])){
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示例程序如下:
$rule = array(
'letter' => 5,// 必须含有大小写字母
'number' => 2,// 必须含有数字
'special' => 2 // 必须含有特殊字符
);
$special = '!@#$%_-';
$obj = new Generatepassword(8,10,$rule,$special);
$passwords = $obj->batchGenerate();
本文完整源码可点击此处http://xiazai.jb51.cc/201409/yuanma/Generatepassword(jb51.cC).rar">本站下载。
相信本文所述对大家的C#程序设计有一定的借鉴价值。
以上是大佬教程为你收集整理的php密码生成类实例全部内容,希望文章能够帮你解决php密码生成类实例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。