PHP中快速生成随机密码的几种方式


Posted in PHP onApril 17, 2017

思路是这样的,密码通常是英文字母和数字的混合编排,我们可以借助随机函数rand函数随机的选择一个长字符串的一部分。

function random_code($length = 8,$chars = null){
  if(empty($chars)){
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  }
  $count = strlen($chars) - 1;
  $code = '';
  while( strlen($code) < $length){
    $code .= substr($chars,rand(0,$count),1);
  }
  return $code;
}
echo random_code;//A1zYbN5X

我们使用rand函数的目的是为了产生随机的字符串,但是如果有一个函数可以做到的话,我们就没有必要使用rand函数了。

function random_char($length = 8,$chars = null){
  if( empty($chars) ){
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  }
  $chars = str_shuffle($chars);
  $num = $length < strlen($chars) - 1 ? $length:str_len($chars) - 1;
  return substr($chars,0,$num);
}

可以看到不使用rand函数,而是使用str_shuffle函数,好处是大大减少了代码量。

更近一部的,我们的函数不仅可以生成随机的密码,还可以生成短信验证码,以及高强度的服务器登录密码。

function random_code_type($length = 8,$type = 'alpha-number'){
  $code_arr = array(
    'alpha' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
    'number'=> '0123456789',
    'sign'  => '#$%@*-_',
  );

  $type_arr = explode('-',$type);

  foreach($type_arr as $t){
    if( ! array_key_exists($t,$code_arr)){
      trigger_error("Can not generate type ($t) code");
    }
  }

  $chars = '';

  foreach($type_arr as $t){
    $chars .= $code_arr[$t];
  }
  $chars = str_shuffle($chars);
  $number = $length > strlen($chars) - 1 ? strlen($chars) - 1:$length;
  return substr($chars,0,$number);
}

echo random_code_type(8,"alpha-number-sign");#kXM*mC$S

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
Jun 05 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
PHP无限极分类函数的实现方法详解
Apr 15 #PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 #PHP
php修改数组键名的方法示例
Apr 15 #PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 #PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 #PHP
You might like
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
PHP与SQL注入攻击[三]
2007/04/17 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
python传递参数方式小结
2015/04/17 Python
Python函数返回值实例分析
2015/06/08 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Python如何输出百分比
2020/07/31 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
Python字符串的转义字符
2022/04/07 Python