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 相关文章推荐
提升PHP执行速度全攻略(上)
Oct 09 PHP
一段php加密解密的代码
Oct 09 PHP
用PHP调用Oracle存储过程的方法
Sep 12 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
从wamp到xampp的升级之路
Apr 08 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
WAF的正确bypass
Jan 05 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 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
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
理解javascript回调函数
2014/12/28 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
Python决策树分类算法学习
2017/12/22 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
银行实习自我鉴定
2013/10/12 职场文书
大专会计自我鉴定
2014/02/06 职场文书
婚礼主持词开场白
2014/03/13 职场文书
小学端午节活动方案
2014/03/13 职场文书
房地产开发项目建议书
2014/05/16 职场文书
销售团队口号大全
2014/06/06 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
办公用品管理制度
2015/08/04 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python