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


Posted in PHP onOctober 21, 2013

代码一:

生成一个随机密码的函数,生成的密码为小写字母与数字的随机字符串,长度可自定义。相对来说,这个比较简单

<?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)]; 
  $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 相关文章推荐
PHP与javascript对多项选择的处理
Oct 09 PHP
一些使用频率比较高的php函数
Oct 03 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
php遍历数组的方法分享
Mar 22 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
php汉字转拼音的示例
Feb 27 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
laravel自定义分页效果
Jul 23 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 #PHP
PHP中include与require使用方法区别详解
Oct 19 #PHP
php文件上传的简单实例
Oct 19 #PHP
php上传文件,创建递归目录的实例代码
Oct 18 #PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 #PHP
10 个经典PHP函数
Oct 17 #PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 #PHP
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
PHP的面试题集
2006/11/19 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python中单、双下划线的区别总结
2017/12/01 Python
python语言中with as的用法使用详解
2018/02/23 Python
numpy中矩阵合并的实例
2018/06/15 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
采购主管工作职责
2013/12/12 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
音乐教育感言
2014/03/05 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
财务出纳岗位职责
2015/03/31 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle
python使用BeautifulSoup 解析HTML
2022/04/24 Python