zoukankan      html  css  js  c++  java
  • 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;

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

    赞赏码

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

  • 相关阅读:
    Matplotlib
    Numpy&Pandas
    莫凡《机器学习》笔记
    李宏毅《1天搞懂深度学习》笔记
    Git客户端使用教程
    像素级压缩感知图像融合的论文
    二分图【洛谷P2175】 小Z的游戏分队
    模板【洛谷P3390】 【模板】矩阵快速幂
    模板 可并堆【洛谷P3377】 【模板】左偏树(可并堆)
    LCA SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452619.html
Copyright © 2011-2022 走看看