• 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;

    效果图;

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

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

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

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

    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;

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

    赞赏码

    非学,无以致疑;非问,无以广识

  • 相关阅读:
    认知实习(杭钢、杭州中萃)
    Head of a Gang (map+邻接表+DFS)
    Sharing
    Hello World for U (20)
    计算器(delphi)
    CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍
    关于阿里如何吸引大学生用户理财的一些个人看法
    分页 存储过程
    点击退出,并未直接跳转到登陆界面,登录界面还停留在框架集界面
    梦幻之旅--地图编辑器开发
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452619.html
Copyright © 2020-2023  润新知