使用 PHP 开发应用程序, 尤其是网站程序, 常常需要生成随机密码, 如用户注册生成随机密码, 用户重置密码也需要生成一个随机的密码随机密码也就是一串固定长度的字符串, 这里我收集整理了几种生成随机字符串...
使用 PHP 开发应用程序, 尤其是网站程序, 常常需要生成随机密码, 如用户注册生成随机密码, 用户重置密码也需要生成一个随机的密码随机密码也就是一串固定长度的字符串, 这里我收集整理了几种生成随机字符串的方法, 以供大家参考
方法一:
1 在 33 126 中生成一个随机整数, 如 35,
2 将 35 转换成对应的 ASCII 码字符, 如 35 对应 #
3 重复以上 12 步骤 n 次, 连接成 n 位的密码
该算法主要用到了两个函数, mt_rand (int $min , int $max) 函数用于生成随机整数, 其中 $min $max 为 ASCII 码的范围, 这里取 33 -126 , 可以根据需要调整范围, 如 ASCII 码表中 97 122 位对应 a z 的英文字母, 具体可参考 ASCII 码表; chr ( int $ascii ) 函数用于将对应整数 $ascii 转换成对应的字符
- <?php
- function create_password($pw_length = 8) {
- $randpwd = '';
- for ($i = 0; $i <$pw_length; $i++) {
- $randpwd.= chr(mt_rand(33, 126));
- }
- return $randpwd;
- }
- // 调用该函数, 传递长度参数 $pw_length = 6
- echo create_password(6);
- ?-->
方法二:
1 预置一个的字符串 $chars , 包括 a z,A Z,0 9, 以及一些特殊字符
2 在 $chars 字符串中随机取一个字符
3 重复第二步 n 次, 可得长度为 n 的密码
- <?php
- function generate_password($length = 8) {
- // 密码字符集, 可任意添加你需要的字符
- $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<-->~`+=,.;:/?|';
- $password = '';
- for ($i = 0; $i <$length; $i++) {
- // 这里提供两种字符获取方式
- // 第一种是使用 substr 截取 $chars 中的任意一位字符;
- // 第二种是取字符数组 $chars 的任意元素
- // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
- $password.= $chars[mt_rand(0, strlen($chars) - 1) ];
- }
- return $password;
- }
- ?>
来源: https://www.php1.cn/detail/php-803421b63b.html