大家好,又见面了,我是全栈君。
function createPassword($length = 16)
{
$pwd = '';
$num = 0;
$str = "~!@#$%^&*_-+=`|\(){}[]:;\"'>,.?/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$count = strlen($str);
while ((strlen($pwd) < $length) || $num < $length) {
$rand = rand(0, $count);
$sub = substr($str, $rand, 1);
$pwd .= $sub; //此处去除< 小于号,
$num++;
echo $pwd . ' 自增值: ' . $num . ' 随机字符位置: ' . $rand . '<br>';
}
return $pwd;
}
$createPwd = createPassword(32);
echo '密码: ' . $createPwd;
echo '<br>';
echo "密码长度: " . strlen($createPwd);
die;
效果图;
但不知道为什莫,字符串中不能带< 小于号,有时间再研究下,有大佬知道的可以给指点指点.
解答:首先感谢大佬,在百忙之中,为小弟解惑
这个问题简单易懂,但是你不真实操作下,往往容易忽略掉
附上大佬给优化后的代码:
function createPassword($length = 16)
{
$pwd = '';
$num = 0;
$str = "<~!@#$%^&*_-+=`|\(){}[]:;\"'>,.?/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$count = strlen($str);
for($i = 0; $i < $length; $i++){
$rand = rand(0, $count-1);
$pwd .= $str[$rand];
echo $pwd . ' 自增值: ' . $num . ' 随机字符位置: ' . $rand . '<br>';
}
return $pwd;
}
$createPwd = createPassword(32);
echo '密码: ' . $createPwd;
echo '<br>';
echo "密码长度: " . strlen($createPwd);
die;
所以,要求不高的情况下,可以把< 去掉,或者在命令行直接操作就好.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111593.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...