PHP password generation class instance, PHP generation instance_PHP tutorial

WBOY
Release: 2016-07-13 10:18:16
Original
879 people have browsed it

php password generation class instance, php generation instance

The example in this article describes the password generation class implemented in PHP and its application method, and is shared with everyone for your reference. The specific analysis is as follows:

1. PHP password generation function:

1. Password length can be set.
2. You can set the number of passwords to be generated and generate them in batches.
3. You can specify password rules, letters, numbers, special characters, etc.

2. Usage:

GeneratePassword.class.php class file is as follows:

<&#63;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 
 
&#63;> 

Copy after login

The demo sample program is as follows:

<&#63;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); 
&#63;> 

Copy after login

The complete source code of this article can be downloaded from this website by clicking here.

I believe that what is described in this article has certain reference value for everyone’s C# programming.

PHP generates random password

You can put uppercase letters and numbers in an array and pick them randomly.

If you use your original idea, you can make a judgment like this
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 program for batch generating card numbers and passwords

I’ll give you some code, how to change it specifically, you can change it according to your own needs.
function MakeCard()
{
set_time_limit(0);

//Process buffer
ob_end_clean();
ob_implicit_flush(true);
echo str_pad(" ", 256);

if(intval($_POST[' num']>0)) $num=intval($_POST['num']); //Quantity
if(intval($_POST['point']>0)) $point=intval($ _POST['point']); //Points
if(intval($_POST['batch']>0)) $batch=intval($_POST['batch']); //Batch number
if(($_POST['ym']!="")) $ym=$_POST['ym']; //Year and month of release
else $ym=date('ym');

if($num==0) return;

$num=$num*10000; //The number of cards, that is, the number of records

echo "

Start" .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 digits
$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);
//Check for duplicates
//Add insert here Data code.

echo "End".date("H:i:s")."";
printf("
Successfully generated: %s million %s points Password

",$num/1e4,$point);
return $num;
} //End of function

$numbers=MakeCark(...the rest Full text>>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/883683.htmlTechArticlephp password generation class example, php generation example This article describes the password generation class and its application method implemented by php, Share it with everyone for your reference. The specific analysis is as follows: 1. PHP password...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!