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 相关文章推荐
输出控制类
Oct 09 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
深入php var_dump()函数的详解
Jun 05 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
php根据生日计算年龄的方法
Jul 13 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP与SQL语句写一句话木马总结
Oct 11 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
php实现word转html的方法
2016/01/22 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python入门篇之数字
2014/10/20 Python
利用python发送和接收邮件
2016/09/27 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Python os模块常用方法和属性总结
2020/02/20 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
家长评语和期望
2014/02/10 职场文书
高中团支书竞选稿
2015/11/21 职场文书
《检阅》教学反思
2016/02/22 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技