PHP实现密码生成器包含大小写字母数字特殊字符

PHP实现密码生成器包含大小写字母数字特殊字符

大家好,又见面了,我是全栈君。

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;

效果图;

PHP实现密码生成器包含大小写字母数字特殊字符

但不知道为什莫,字符串中不能带< 小于号,有时间再研究下,有大佬知道的可以给指点指点.

解答:首先感谢大佬,在百忙之中,为小弟解惑

这个问题简单易懂,但是你不真实操作下,往往容易忽略掉

PHP实现密码生成器包含大小写字母数字特殊字符PHP实现密码生成器包含大小写字母数字特殊字符

PHP实现密码生成器包含大小写字母数字特殊字符

附上大佬给优化后的代码:

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;

所以,要求不高的情况下,可以把< 去掉,或者在命令行直接操作就好.

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111593.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号