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

代码一:

那篇小说首要分享下php中生成自由密码的秘诀,原理就是把一些要扭转的字符预置三个的字符串蕴含数字拼音之类的以致一些特殊字符,那样大家再自由取字符组成大家想要的妄动密码了

代码一:

浮动二个随意密码的函数,生成的密码为小写字母与数字的轻松字符串,长度可自定义。相对来讲,那几个比较轻松

复制代码代码如下:

<?php 
/* 
 * php自动生成新密码自定义函数(带实例演示) 
      适用条件: PHP5.2.x  / mysql 5.0.x 
* */ 
function genPassword($min = 5, $max = 8)   
{   
    $validchars=”abcdefghijklmnopqrstuvwxyz123456789″;   
    $max_char=strlen($validchars)-1;   
    $length=mt_rand($min,$max);   
    $password = “”;   
    for($i=0;$i<$length;$i )   
    {   
        $password.=$validchars[mt_rand(0,$max_char)];   
    }   
        return $password;   
    }   
    echo “新密码:”.genPassword().”<br>”;   
    echo “新密码:”.genPassword(5,10).”<br>”; 
?> 

上面总计了风流洒脱部分实例各位朋友可参谋。

例1

最洗练的变型方法

复制代码代码如下:

function generatePassword($length=8) 

    $chars = array_merge(range(0,9), 
                     range(‘a’,’z’), 
                     range(‘A’,’Z’), 
                     array(‘!’,’@’,’$’,’%’,’^’,’&’,’*’)); 
    shuffle($chars); 
    $password = ”; 
    for($i=0; $i<8; $i++) { 
        $password .= $chars[$i]; 
    } 
    return $password; 

例2

1、在 33 – 126 中变化贰个大肆整数,如 35,
2、将 35 调换来对应的ASCII码字符,如 35 对应 #
3、重复以上 1、2 步骤 n 次,连接成 n 位的密码

复制代码代码如下:

function create_password($pw_length = 8) 

    $randpwd = ”; 
    for ($i = 0; $i < $pw_length; $i++)  
    { 
        $randpwd .= chr(mt_rand(33, 126)); 
    } 
    return $randpwd; 
}

// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);

实例

复制代码代码如下:

<?php  
mt_srand((double) microtime() * 1000000);  

function gen_random_password($password_length = 32,
$generated_password = “”){  
 $valid_characters =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”;  
 $chars_length = strlen($valid_characters) – 1;  
 for($i = $password_length; $i–; ) {  
  //$generated_password .= $valid_characters[mt_rand(0,
$chars_length)];  
// www.jbxue.com 
  $generated_password .= substr($valid_characters,
(mt_rand()%(strlen($valid_characters))), 1);  
 }  
 return $generated_password;  
}  

?><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“;  
<html>  
<head>  
<title>php 密码生成器 v 4.0</title>  
<style type=”text/css”>  
body {  
 font-family: Arial;  
 font-size: 10pt;  
}  
</style>  
</head>  
<body>  
<span style=”font-weight: bold; font-size: 15pt;”>密码生成器v4.0
by freemouse</span><br /><br />  
<?php  

if (isset($_GET[‘password_length’])){  
 if(preg_match(“/([0-9]{1,8})/”, $_GET[‘password_length’])){  
  print(“密码生成成功:<br />  
<span style=”font-weight: bold”>” .
gen_random_password($_GET[‘password_length’]) .
“</span><br /><br />n”);  
 } else {  
  print(“密码长度不正确!<br /><br />n”);  
 }  
}  

print <<< end 
请为密码生成其钦赐生成密码的长度:<br /><br />  
<form action=”{$_SERVER[‘PHP_SELF’]}” method=”get”>  
 <input type=”text” name=”password_length”>  
 <input type=”submit” value=”生成”>  
</form>  
end;  

?>  
</body>  
</html> 

例4

1、预置三个的字符串 $chars ,包罗 a – z,A – Z,0 –
9,以致部分特殊字符
2、在 $chars 字符串中随机取一个字符
3、重复第二步 n 次,可得长度为 n 的密码

复制代码代码如下:

function generate_password( $length = 8 ) { 
    // 密码字符集,可任性增多你需求的字符 
    $chars =
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_
[]{}<>~`+=,.;:/?|’;

    $password = ”;
    for ( $i = 0; $i < $length; $i++ ) 
    {
        // 这里提供三种字符获取情势
        // 第风流浪漫种是运用 substr 截取$chars中的大肆一人字符;
        // 第三种是取字符数组 $chars 的自便成分
        // $password .= substr($chars, mt_rand(0, strlen($chars) – 1),
1);
        $password .= $chars[ mt_rand(0, strlen($chars) – 1) ];
    }

    return $password;
}

地点经过测查验质量量都不及上边那些

1、预置一个的字符数组 $chars ,包蕴 a – z,A – Z,0 –
9,以致部分特殊字符
2、通过array_rand(卡塔尔(قطر‎从数组 $chars 中随性所欲选出 $length 个因素
3、依照已获取的键名数组 $keys,从数组 $chars
收取字符拼接字符串。该方式的瑕疵是均等的字符不会再次取。

复制代码代码如下:

function make_password( $length = 8 ) 

    // 密码字符集,可自便增多你须求的字符 
    $chars = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’,  
    ‘i’, ‘j’, ‘k’, ‘l’,’m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’,  
    ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’,’z’, ‘A’, ‘B’, ‘C’, ‘D’,  
    ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’,’M’, ‘N’, ‘O’,  
    ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’,’Z’,  
    ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘!’,  
    ‘@’,’#’, ‘$’, ‘%’, ‘^’, ‘&’, ‘*’, ‘(‘, ‘)’, ‘-‘, ‘_’,  
    ‘[‘, ‘]’, ‘{‘, ‘}’, ‘<‘, ‘>’, ‘~’, ‘`’, ‘+’, ‘=’, ‘,’,  
    ‘.’, ‘;’, ‘:’, ‘/’, ‘?’, ‘|’);

    // 在 $chars 中随机取 $length 个数组成分键名
    $keys = array_rand($chars, $length);

    $password = ”;
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组成分连接成字符串
        $password .= $chars[$keys[$i]];
    }

    return $password;
}

上边计算了有的实例各位朋友可参看。

扭转一个率性密码的函数,生成的密码为小写字母与数字的即兴字符串,长度可自定义。相对来讲,那个比较简单

例1

复制代码 代码如下:
/*
 * php自动生成新密码自定义函数(带实例演示)
      适用条件: PHP5.2.x  / mysql 5.0.x
* */
function genPassword($min = 5, $max = 8) 

    $validchars=”abcdefghijklmnopqrstuvwxyz123456789″; 
    $max_char=strlen($validchars)-1; 
    $length=mt_rand($min,$max); 
    $password = “”; 
    for($i=0;$i    { 
        $password.=$validchars[mt_rand(0,$max_char)]; 
    } 
        return $password; 
    } 
    echo “新密码:”.genPassword().”
“; 
    echo “新密码:”.genPassword(5,10).”
“;
?>

最精短的变型方法

上边总括了有的实例各位朋友可参照他事他说加以考查。

 代码如下

例1

function generatePassword($length=8)
{
    $chars = array_merge(range(0,9),
                     range(‘a’,’z’),
                     range(‘A’,’Z’),
                     array(‘!’,’@’,’$’,’%’,’^’,’&’,’*’));
    shuffle($chars);
    $password = ”;
    for($i=0; $i<8; $i++) {
        $password .= $chars[$i];
    }
    return $password;
}

最精简的扭转方法

 

复制代码 代码如下:
function generatePassword($length=8)
{
    $chars = array_merge(range(0,9),
                     range(‘a’,’z’),
                     range(‘A’,’Z’),
                     array(‘!’,’@’,’$’,’%’,’^’,’&’,’*’));
    shuffle($chars);
    $password = ”;
    for($i=0; $i<8; $i++) {
        $password .= $chars[$i];
    }
    return $password;
}

例2

例2

1、在 33 – 126 中生成三个自由整数,如 35,
2、将 35 转变到对应的ASCII码字符,如 35 对应 #
3、重复以上 1、2 手续 n 次,连接成 n 位的密码

1、在 33 – 126 中生成八个私行整数,如 35,
2、将 35 转变到对应的ASCII码字符,如 35 对应 #
3、重复以上 1、2 手续 n 次,连接成 n 位的密码

 代码如下

复制代码 代码如下:
function create_password($pw_length = 8)
{
    $randpwd = ”;
    for ($i = 0; $i < $pw_length; $i++)
    {
        $randpwd .= chr(mt_rand(33, 126));
    }
    return $randpwd;
}

function create_password($pw_length = 8)
{
    $randpwd = ”;
    for ($i = 0; $i < $pw_length; $i++)
    {
        $randpwd .= chr(mt_rand(33, 126));
    }
    return $randpwd;
}

// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);

// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);

实例

实例

复制代码 代码如下:
mt_srand((double) microtime() * 1000000);

 代码如下

function gen_random_password($password_length = 32,
$generated_password = “”){
 $valid_characters =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”;
 $chars_length = strlen($valid_characters) – 1;
 for($i = $password_length; $i–; ) {
  //$generated_password .= $valid_characters[mt_rand(0,
$chars_length)];

<?php
mt_srand((double) microtime() * 1000000);
 
function gen_random_password($password_length = 32,
$generated_password = “”){
 $valid_characters =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”;
 $chars_length = strlen($valid_characters) – 1;
 for($i = $password_length; $i–; ) {
  //$generated_password .= $valid_characters[mt_rand(0,
$chars_length)];
 
  $generated_password .=
substr($valid_characters,
(mt_rand()%(strlen($valid_characters))), 1);
 }
 return $generated_password;
}
 
?><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“;
<html>
<head>
<title>php 密码生成器 v 4.0</title>
<style type=”text/css”>
body {
 font-family: Arial;
 font-size: 10pt;
}
</style>
</head>
<body>
<span style=”font-weight: bold; font-size: 15pt;”>密码生成器v4.0
by freemouse</span><br /><br />
<?php
 
if (isset($_GET[‘password_length’])){
 if(preg_match(“/([0-9]{1,8})/”,
$_GET[‘password_length’])){
  print(“密码生成成功:<br />
<span style=”font-weight: bold”>” .
gen_random_password($_GET[‘password_length’]) .
“</span><br /><br />n”);
 } else {
  print(“密码长度不允许确!<br /><br />n”);
 }
}
 
print <<< end
请为密码生成其钦定生成密码的尺寸:<br /><br />
<form action=”{$_SERVER[‘PHP_SELF’]}” method=”get”>
 <input type=”text” name=”password_length”>
 <input type=”submit” value=”生成”>
</form>
end;
 
?>
</body>
</html>

  $generated_password .= substr($valid_characters,
(mt_rand()%(strlen($valid_characters))), 1);
 }
 return $generated_password;
}

例4

?>

1、预置一个的字符串 $chars ,富含 a – z,A – Z,0 –
9,以致一些特殊字符
2、在 $chars 字符串中随机取三个字符
3、重复第二步 n 次,可得长度为 n 的密码

php 密码生成器 v 4.0

 代码如下

密码生成器v4.0 by
freemouse

function generate_password( $length = 8 ) {
    // 密码字符集,可放肆增多你需求的字符
    $chars =
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_
[]{}<>~`+=,.;:/?|’;

if (isset($_GET[‘password_length’])){
 if(preg_match(“/([0-9]{1,8})/”, $_GET[‘password_length’])){
  print(“密码生成成功:

    $password = ”;
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里提供三种字符获取格局
        // 第风流倜傥种是应用 substr 截取$chars中的大肆一人字符;
        // 第两种是取字符数组 $chars 的大肆成分
        // $password .= substr($chars, mt_rand(0, strlen($chars) – 1),
1);
        $password .= $chars[ mt_rand(0, strlen($chars) – 1) ];
    }

” .
gen_random_password($_GET[‘password_length’]) . ”

    return $password;
}

n”);
 } else {
  print(“密码长度不得法!

上边经过测量试查验质量量都不及下边这么些

n”);
 }
}

1、预置二个的字符数组 $chars ,包蕴 a – z,A – Z,0 –
9,以致部分特殊字符
2、通过array_rand(卡塔尔从数组 $chars 中随性所欲选出 $length 个因素
3、依据已拿到的键名数组 $keys,从数组 $chars
收取字符拼接字符串。该方法的欠缺是完全一样的字符不会重复取。

print <<< end
请为密码生成其钦赐生成密码的尺寸:

 代码如下

 
 

function make_password( $length = 8 )
{
    // 密码字符集,可任性增添你须要的字符
    $chars = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’,
    ‘i’, ‘j’, ‘k’, ‘l’,’m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’,
    ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’,’z’, ‘A’, ‘B’, ‘C’, ‘D’,
    ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’,’M’, ‘N’, ‘O’,
    ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’,’Z’,
    ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘!’,
    ‘@’,’#’, ‘$’, ‘%’, ‘^’, ‘&’, ‘*’, ‘(‘, ‘)’, ‘-‘, ‘_’,
    ‘[‘, ‘]’, ‘{‘, ‘}’, ‘<‘, ‘>’, ‘~’, ‘`’, ‘+’, ‘=’, ‘,’,
    ‘.’, ‘;’, ‘:’, ‘/’, ‘?’, ‘|’);

end;

    // 在 $chars 中大肆取 $length 个数组成分键名
    $keys = array_rand($chars, $length);

?>

    $password = ”;
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组成分连接成字符串
        $password .= $chars[$keys[$i]];
    }

例4

    return $password;
}

1、预置八个的字符串 $chars ,包含 a – z,A – Z,0 –
9,以至部分特殊字符
2、在 $chars 字符串中随机取叁个字符
3、重复第二步 n 次,可得长度为 n 的密码

复制代码 代码如下:
function generate_password( $length = 8 ) {
    // 密码字符集,可放肆增加你供给的字符
    $chars =
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_
[]{}<>~`+=,.;:/?|’;

    $password = ”;
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里提供三种字符获取格局
        // 第黄金年代种是采纳 substr 截取$chars中的任性一个人字符;
        // 第三种是取字符数组 $chars 的放肆成分
        // $password .= substr($chars, mt_rand(0, strlen($chars) – 1),
1);
        $password .= $chars[ mt_rand(0, strlen($chars) – 1) ];
    }

    return $password;
}

地方经过测量试验性能都不比上面那么些

1、预置三个的字符数组 $chars ,包蕴 a – z,A – Z,0 –
9,以至一些特殊字符
2、通过array_rand(卡塔尔国从数组 $chars 中任意选出 $length 个成分
3、依照已得到的键名数组 $keys,从数组 $chars
抽取字符拼接字符串。该方式的劣点是千篇一律的字符不会重新取。

复制代码 代码如下:
function make_password( $length = 8 )
{
    // 密码字符集,可任性增添你必要的字符
    $chars = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’,
    ‘i’, ‘j’, ‘k’, ‘l’,’m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’,
    ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’,’z’, ‘A’, ‘B’, ‘C’, ‘D’,
    ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’,’M’, ‘N’, ‘O’,
    ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’,’Z’,
    ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘!’,
    ‘@’,’#’, ‘$’, ‘%’, ‘^’, ‘&’, ‘*’, ‘(‘, ‘)’, ‘-‘, ‘_’,
    ‘[‘, ‘]’, ‘{‘, ‘}’, ”, ‘~’, ‘`’, ‘+’, ‘=’, ‘,’,
    ‘.’, ‘;’, ‘:’, ‘/’, ‘?’, ‘|’);

    // 在 $chars 中随便取 $length 个数组成分键名
    $keys = array_rand($chars, $length);

    $password = ”;
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组成分连接成字符串
        $password .= $chars[$keys[$i]];
    }

    return $password;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注