网站程序中,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码。随机密码也就是一串固定长度的字符串。
方法一
- 预置一个字符串$chars,包括 a – z,A – Z,0 – 9,以及一些特殊字符
- 在 $chars 字符串中随机取一个字符
- 重复第二步n次
function generate_password($length = 8)
{
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
for ($i=0; $i<$length; $i++) {
// 一种是取字符数组 $chars 的任意元素
// 另一种是使用 substr 截取$chars中的任意一位字符
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}
echo generate_password(6);
方法二
- time()获取当前unix时间戳
- 将时间戳MD5加密
- 将第二步加密的结果,截取 n 位即得想要的密码
function generate_password()
{
$str = substr(md5(time()), 0, 6);
return $str ;
}
echo generate_password();
方法三
- 在33-126中随机生成一个整数
- 将 35 转换成对应的ASCII码字符
- 重复以上 1、2 步骤 n 次,连接成 n 位的密码
function create_password($pw_length = 8)
{
$randed = '';
for ($i = 0; $i<$pw_length; $i++) {
$randed.=chr(mt_rand(33, 126));
}
return $randed;
}
echo create_password(6);