这篇文章主要分享下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" "http://www.w3.org/TR/html4/loose.dtd">  
<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;
}

php中生成随机密码的自定义函数代码的更多相关文章

  1. php生成随机密码(php自定义函数)转自先锋教程网

    php生成随机密码(php自定义函数) 时间:2015-12-16 20:43:49来源:网络 导读:php随机密码的生成代码,使用php自定义函数生成指定长度的随机密码,密码规则为小写字母与数字的随 ...

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

    php生成随机密码的自定义函数 生成一个随机密码的函数,生成的密码为小写字母与数字的随机字符串,长度可自定义. 复制代码代码如下: <?php /*  * php自动生成新密码自定义函数(带实例 ...

  3. 如何在sqlite3连接中创建并调用自定义函数

    #!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...

  4. Hive中如何添加自定义UDF函数以及oozie中使用hive的自定义函数

    操作步骤: 1. 修改.hiverc文件 在hive的conf文件夹下面,如果没有.hiverc文件,手工自己创建一个. 参照如下格式添加: add jar /usr/local/hive/exter ...

  5. 怎样在hibernate的HQL语句中使用mysql 的自定义函数?

    问题:怎样在hibernate中使用mysql的函数? 1.hibernate支持原生态的sql语句查询,使用session.createSQLQuery()创建查询对象: 2.怎样在hql中使用my ...

  6. 如何在Mirth Connect中创建和调用自定义Java代码

    0-前言 本文章将向您展示如何创建自定义Java类,将其编译/打包到JAR中,将其包含在Mirth Connect在,并在JavaScript中调用它,您可以从任何JavaScript上下文调用自定义 ...

  7. go中的方法以及自定义类型代码示例

    package main import "fmt" type user struct { name string age int sex string } type admin s ...

  8. (转载)javascript客户端生成MD5值的函数代码

    (转载)http://www.jb51.net/article/26223.htm 用js实现的客户端即可实现md5值的代码,一般情况下都是后台语言才有的,客户端也有了,方便有需要的朋友了. 测试代码 ...

  9. Excel之在单元格中生成随机密码

    公式 =CHAR(INT(RAND()*26+97))&INT(RAND()*10)&CHAR(INT(RAND()*26+97))&INT(RAND()*10) 分析 CHA ...

随机推荐

  1. 通知传值(NSNotificationCenter)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  2. CSS字体中英文名称对照表(转)

      在css文件中,我们常看到有些字体名称变成了乱码,这是由于网页开发者将中文字体的名字直接写成了中文,而css文件本身没有声明字符编码方式,查看时就出现了乱码.为了避免这种乱码状况出现,可以将css ...

  3. Android下 布局加边框 指定背景色 半透明

    背景设置为自定义的shape文件: <!-- <?xml version="1.0" encoding="utf-8"?><shape ...

  4. float数据在内存中的存储方法

    浮点型变量在计算机内存中占用4字节(Byte),即32-bit.遵循IEEE-754格式标准.一个浮点数由2部分组成:底数m 和 指数e.                          ±mant ...

  5. Linux下安装jdk8的方法

    一.yum安装 只需要一条命令就可以安装jdk: yum install java--openjdk* -y 执行过这条命令无需配置,直接可以使用. 二.下载tar包安装 下载jdk8 登录网址:ht ...

  6. Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现

    Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现 1. 第五代语言就是自然语言又被称为知识库语言或人工智能语言,1 2. 人工智能语言特点2 2.1. 试探法2 ...

  7. notepad 替换行收尾字符串或在行首尾新增字符

    用 Notepad++ 打开,把每一个将要放在表中单元格的内容放一行(注: ^ 代表行首 $ 代表行尾) 去除行尾空格和空白行:按CTRL+H 选择正则表达式-- 查找目标:\s+$ 替换为空 去除行 ...

  8. oracle中提高order by的性能

    1.如果order by columnA,那么在where查询条件中添加条件columnA=value,则oracle内部会过滤order by排序,直接用索引(可以通过execution plan查 ...

  9. esper 附录A

    A2 select irstream symbol, volume, price from MarketDate.win.time(5.5 sec) seconds seconds seconds s ...

  10. windows上mysql安装

    1. 下载MySQL Community Server 5.7.14 Index of /MySQL/Downloads/MySQL-Cluster-7.1 2. 解压MySQL压缩包 安装路径:E: ...