PHP编程:php密码生成类实例
发布时间:2020-12-13 02:02:49 所属栏目:PHP教程 来源:网络整理
导读:《php密码生成类实例》要点: 本文介绍了php密码生成类实例,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php实现的暗码生成类及其应用方法,供大家参考研究.具体分析如下: PHP学习 一、php暗码生成类功能: 1.可设定暗码长度. 2.可设定
《php密码生成类实例》要点: 本篇章节讲解php实现的暗码生成类及其应用方法,分享给大家供大家参考.具体分析如下:PHP学习 一、php暗码生成类功能: 1.可设定暗码长度. 二、用法: 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为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容