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;

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

 

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 服务器winsxs文件夹怎么清理工具,win7如何使用WinSxS工具安全删除WinSxS文件夹垃圾…

    服务器winsxs文件夹怎么清理工具,win7如何使用WinSxS工具安全删除WinSxS文件夹垃圾…我们都知道WinSxS是系统文件Windows目录下一个非常重要的文件夹,WinSxS文件夹里边有很多重要的组件,这些文件能够保证Windows7系统正常运行,所以WinSxS文件夹里面的文件是不可以随便删除的。但WinSxS文件夹占用的空间较大,影响win7运行速度,有什么方法可以安全删除一些无用的垃圾?我们可以使用WinSxS工具安全删除WinSxS文件夹垃圾,但是大家在删除文件过程中要小心,…

    2022年10月24日
  • django笔记_django 异步

    django笔记_django 异步前言Django是一个开放源代码的Web应用框架,由Python写成,最初用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,即CMS(内容管理系统)软件,于2005年7月在BSD许可证下发布,这

  • M91A安全帽识别布控球 安全帽穿戴AI视频分析功能

    M91A安全帽识别布控球 安全帽穿戴AI视频分析功能AI布控球基于前端边缘AI计算及后端云平台计算,AI布控球集成人脸识别、安全帽识别等的AI视频图像分析算法,通过计算机视觉技术对图像、人脸、场景、视频等进行深度学习,识别并标示图像、场景、视频内容,并对自定义的行为、意图进行识别并预警。AI识别能力介绍:着装检测:针对施工区域的人员是否戴安全帽。人脸检测:针对施工区域的人员是否陌生人(黑名单)。行为检测:针对施工区域内人员是否吸烟。区域检测:针对规定的区域划线后检测是否在区域内或区域外。4G高清安全帽识别布控球,是一款便携式的集4G无线、远程视

  • android开发笔记之 Android代码混淆打包

    android开发笔记之 Android代码混淆打包大家应该都听过代码混淆吧,如果大家有去反编译过别人的APK的话,应该会看到好多包名和类名是a,b.c….之类的的吧,这里就提到了一个概念:混淆。那就让我们了解下这个东西吧作用:为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译缺省情况下,proguard会混淆所有代码,但是下面几种情况是不能改变java元素的名称,否则就会这样就会导致程序出错。一,我们用到反射的地方。

  • 测试平台开发(二) 高逼格登录页面

    测试平台开发(二) 高逼格登录页面

    2020年11月20日
  • easymock单元测试(控制测试)

    本文转自:点击打开链接测试驱动开发是软件开发的重要部分。如果代码不进行测试,就是不可靠的。所有代码都必须测试,而且理想情况下应该在编写代码之前编写测试。但是,有些东西容易测试,有些东西不容易。如果要编写一个代表货币值的简单的类,那么很容易测试把$1.23和$2.8相加是否能够得出$4.03,而不是$3.03或$4.029999998。测试是否不会出现$

发表回复

您的电子邮箱地址不会被公开。

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