程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php密碼生成類實例,php生成實例

php密碼生成類實例,php生成實例

編輯:關於PHP編程

php密碼生成類實例,php生成實例


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

一、php密碼生成類功能:

1.可設定密碼長度。
2.可設定要生成的密碼個數,批量生成。
3.可以指定密碼的規則,字母,數字,特殊字符等。

二、用法:

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'], 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; 
  } 
 
  /** 數字 */ 
  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生成隨機密碼

可以把大寫字母和數字放在一個數組裡,再隨機取。

用你原來想法的話,可以這樣加判斷
for ($i = 0; $i < $pw_length; $i++)
{
$a =char(mt_rand(33, 126));
if(($a < '0') || ($a > 'Z') || ($a > '9')&&($a <'A'))
{
$i--
}
else
{
$randpwd .=$a;
}
}
 

批量生成卡號密碼的php程序

給你一些代碼吧,具體怎麼改,你自己根據自己的需要改一下.
<?php
function MakeCard()
{
set_time_limit(0);

//處理緩沖區
ob_end_clean();
ob_implicit_flush(true);
echo str_pad(" ", 256);

if(intval($_POST['num']>0)) $num=intval($_POST['num']); //數量
if(intval($_POST['point']>0)) $point=intval($_POST['point']); //點數
if(intval($_POST['batch']>0)) $batch=intval($_POST['batch']); //批號
if(($_POST['ym']!="")) $ym=$_POST['ym']; //發行年月
else $ym=date('ym');

if($num==0) return;

$num=$num*10000; //卡的張數,即記錄數

echo "<p>開始 ".date("H:i:s")." ";

for($i=1;$i<=$num;$i++)
{
$sn=sprintf("%02s%s%06s",$batch,$ym,$i);
$seek=mt_rand(0,9999).mt_rand(0,9999).mt_rand(0,9999); //12位
$start=mt_rand(0,20);
$str=strtoupper(substr(md5($seek),$start,12));
$str=str_replace("O",chr(mt_rand(65,78)),$str);
$str=str_replace("0",chr(mt_rand(65,78)),$str);
$row=array('sn'=>$sn,'password'=>$str,'created'=>time(),'point'=>$point);
//查重
//在這裡加插入數據的代碼.

echo " 結束 ".date("H:i:s")."";
printf("<br>成功生成:%s萬個 %s點 的密碼</p>",$num/1e4,$point);
return $num;
} //函數結束

$numbers=MakeCark(......余下全文>>
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved