首页 > 语言 > PHP > 正文

php随机密码生成的自定义函数

2024-09-04 11:49:12
字体:
来源:转载
供稿:网友

如果要做到安全密码与用户名都随机我有一个朋友做服务器的登录密码与用户名就是使用了phpmyadmin随机生成密码功能来做的,与其用phpmyadmin不如自己做了,下文整理了一些关于php随机密码生成的自定义函数供大家参考.

可以指定生成的字符串长度,代码如下:

  1. function rand_str($length$max=FALSE) 
  2.   if (is_int($max) && $max > $length
  3.   { 
  4.     $length = mt_rand($length$max); 
  5.   } 
  6.   $output = ''
  7.     
  8.   for ($i=0; $i<$length$i++) 
  9.   { 
  10.     $which = mt_rand(0,2); 
  11.       
  12.     if ($which === 0) 
  13.     { 
  14.       $output .= mt_rand(0,9); 
  15.     } 
  16.     elseif ($which === 1) 
  17.     { 
  18.       $output .= chr(mt_rand(65,90)); 
  19.     } 
  20.     else 
  21.     { 
  22.       $output .= chr(mt_rand(97,122)); 
  23.     } 
  24.   } 
  25.   return $output

调用实例:$randstr = rand_str(16);

生成随机字符串的函数,代码如下:

  1. <?php 
  2. /** 
  3. * 产生随机字符串 
  4. * 
  5. * 产生一个指定长度的随机字符串,并返回给用户 
  6. * 
  7. * @access public 
  8. * @param int $len 产生字符串的位数 
  9. * @return string 
  10. */ 
  11. function randStr($len=6) { 
  12. $chars='ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789#%*'// characters to build the password from 
  13. mt_srand((double)microtime()*1000000*getmypid()); // seed the random number generater (must be done) 
  14. $password='';//开源软件:Vevb.com 
  15. while(strlen($password)<$len
  16. $password.=substr($chars,(mt_rand()%strlen($chars)),1); 
  17. return $password
  18. ?> 

创建字符池.

  1. function randomkeys($length
  2.    { 
  3.        $pattern = '1234567890abcdefghijklmnopqrstuvwxyz 
  4.                    ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&amp;l 
  5.                   t;&gt;?;#:@~[]{}-_=+)(*&amp;^%$?!';    //字符池 
  6.       for($i=0; $i<$length$i++) 
  7.        { 
  8.            $key .= $pattern{mt_rand(0,35)};    //生成php随机数 
  9.        } 
  10.        return $key
  11.    } 
  12.    echo randomkeys(8); 

无需创建字符池

  1. function randomkeys($length
  2.    { 
  3.         $output=''
  4.         for ($a = 0; $a < $length$a++) { 
  5.             $output .= chr(mt_rand(35, 126));    //生成php随机数 
  6.         } 
  7.         return $output
  8.     } 
  9.     echo randomkeys(8); 

随机用户名和随机密码例子:

  1. //随机生成用户名(长度6-13)  
  2.  
  3. function create_password($pw_length = 4){  
  4.     $randpwd = '';  
  5.     for ($i = 0; $i < $pw_length$i++){  
  6.         $randpwd .= chr(mt_rand(33, 126));  
  7.     }  
  8.     return $randpwd;  
  9.  
  10. function generate_username( $length = 6 ) {  
  11.     // 密码字符集,可任意添加你需要的字符  
  12.     $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';  
  13.     $password = '';  
  14.     for ( $i = 0; $i < $length$i++ )  
  15.     {  
  16.         // 这里提供两种字符获取方式  
  17.         // 第一种是使用substr 截取$chars中的任意一位字符;  
  18.         // 第二种是取字符数组$chars 的任意元素  
  19.         // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);  
  20.         $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];  
  21.     }  
  22.     return $password;  
  23. //调用 
  24. $userId = 'user'.generate_username(6);  
  25. $pwd = create_password(9); 

mt_srand生成随机种子,密码的长度可以随意定义,最长32位.

  1. <?php 
  2. mt_srand((double) microtime() * 1000000); 
  3.  
  4. function gen_random_password($password_length = 32, $generated_password = ""){ 
  5.  $valid_characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  6.  $chars_length = strlen($valid_characters) - 1; 
  7.  for($i = $password_length$i--; ) { 
  8.   //$generated_password .= $valid_characters[mt_rand(0, $chars_length)]; 
  9.  
  10.   $generated_password .= substr($valid_characters, (mt_rand()%(strlen($valid_characters))), 1); 
  11.  } 
  12.  return $generated_password
  13. ?> 
  14. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
  15. <html> 
  16. <head> 
  17. <title>php密码生成器</title> 
  18. <style type="text/css"
  19. body { 
  20.  font-family: Arial; 
  21.  font-size: 10pt; 
  22. </style> 
  23. </head> 
  24. <body> 
  25. <span style="font-weight: bold; font-size: 15pt;">密码生成器</span><br /><br /> 
  26. <?php 
  27.  
  28. if (isset($_GET['password_length'])){ 
  29.  if(preg_match("/([0-9]{1,8})/"$_GET['password_length'])){ 
  30.   print("密码生成成功:<br /> 
  31. <span style="font-weight: bold">" . gen_random_password($_GET['password_length']) . "</span><br /><br />n"); 
  32.  } else { 
  33.   print("密码长度不正确!<br /><br />n"); 
  34.  }  //开源软件:Vevb.com 
  35.  
  36. print <<< end 
  37. 请为密码生成其指定生成密码的长度:<br /><br /> 
  38. <form action="{$_SERVER['PHP_SELF']}" method="get"
  39.  <input type="text" name="password_length"
  40.  <input type="submit" value="生成"
  41. </form> 
  42. end;  
  43. ?> 
  44. </body> 
  45. </html>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表