php密碼生成類實例
來源:易賢網(wǎng) 閱讀:769 次 日期:2014-09-29 12:05:37
溫馨提示:易賢網(wǎng)小編為您整理了“php密碼生成類實例”,方便廣大網(wǎng)友查閱!

本文實例講述了php實現(xiàn)的密碼生成類及其應(yīng)用方法,分享給大家供大家參考。具體分析如下:

一、php密碼生成類功能:

1.可設(shè)定密碼長度。

2.可設(shè)定要生成的密碼個數(shù),批量生成。

3.可以指定密碼的規(guī)則,字母,數(shù)字,特殊字符等。

二、用法:

GeneratePassword.class.php類文件如下:

?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 <?php /** Generate Password class,根據(jù)指定規(guī)則生成password * Date: 2013-12-23 * Author: fdipzone * Ver: 1.0 * * Func: * public batchGenerate 批量生成密碼 * private generate 生成單個密碼 * private getLetter 獲取字母 * private getNumber 獲取數(shù)字 * private getSpecial 獲取特殊字符 */ class GeneratePassword{ // class start // 密碼的規(guī)則 default private $_rule = array( 'letter' => 1, 'number' => 1, 'special' => 1 ); private $_length = 8; // 密碼長度 private $_num = 1; // 密碼數(shù)量 private $_special =; //允許的特殊字符 /** 初始化 * @param int $length 密碼長度 * @param int $num 密碼數(shù)量 * @param Array $rule 密碼規(guī)則 * @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){ // 數(shù)量 $this->_num = $num; } if(isset($special) && is_string($special) && $special!=''){ // 特殊字符 $this->_special = $special; } if($rule){ // 規(guī)則 $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<$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, 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; } /** 數(shù)字 */ private function getNumber(){ $number = '1234567890'; return $number; } /** 特殊字符 */ private function getSpecial(){ $special = $this->_special; return $special; } } // class end ?>

demo示例程序如下:

?12345678910111213141516 <?php require 'GeneratePassword.class.php'; $rule = array( 'letter' => 5, // 必須含有大小寫字母 'number' => 2, // 必須含有數(shù)字 'special' => 2 // 必須含有特殊字符 ); $special = '!@#$%_-'; $obj = new GeneratePassword(8, 10, $rule, $special); $passwords = $obj->batchGenerate(); echo implode('<br>', $passwords); ?>

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:php密碼生成類實例

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)