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使用百度翻译api示例分享
Jan 31 PHP
PHP速成大法
Jan 30 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
PHP的命令行命令使用指南
Aug 18 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
Python自动扫雷实现方法
2015/07/25 Python
Python+django实现简单的文件上传
2016/08/17 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
园林设计专业毕业生求职信
2014/03/23 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
教研活动总结
2014/04/28 职场文书
连带责任保证书
2014/04/29 职场文书
干部考核评语
2014/04/29 职场文书
银行贷款收入证明
2014/10/17 职场文书
2016春节慰问信范文
2015/03/25 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android