我试图在php中生成一个随机密码。
但是我得到的都是'a'返回类型是数组类型,我希望它是字符串。对如何修改代码有什么想法吗?
谢谢。
function randomPassword() {
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
for ($i = 0; $i < 8; $i++) {
$n = rand(0, count($alphabet)-1);
$pass[$i] = $alphabet[$n];
}
return $pass;
}
function password_generate($n, $l, $s)
{
$numbers = '1234567890';
$letters = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcefghijklmnopqrstuvwxyz';
$special = '--!=!@@#++%';
return substr(str_shuffle($numbers), 0, $n).substr(str_shuffle($letters), 0, $l).substr(str_shuffle($special), 0, $s);
}
echo password_generate(2,9,1);
我知道您正在尝试以特定的方式生成密码,但您可能也想看看这个方法……
$bytes = openssl_random_pseudo_bytes(2);
$pwd = bin2hex($bytes);
它取自php.net站点,它创建了一个字符串,长度是您在openssl_random_pseudo_bytes函数中输入的数字的两倍。因此,上面的代码将创建一个长度为4个字符的密码。
总之……
$pwd = bin2hex(openssl_random_pseudo_bytes(4));
会创建一个8个字符长的密码。
但是请注意,密码只包含数字0-9和小写字母a-f!