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 引用(&amp;)详解
Nov 20 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
php使用google地图应用实例
Dec 31 PHP
php实现的RSS生成类实例
Apr 23 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
PHP类型约束用法示例
Sep 28 PHP
php 中奖概率算法实现代码
Jan 25 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 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实现的生成静态HTML速度快类库
2007/03/31 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Django模板Templates使用方法详解
2019/07/19 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
Python实现自动访问网页的例子
2020/02/21 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
教育局长自荐信范文
2013/12/22 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
消防安全宣传标语
2014/06/07 职场文书
工作证明格式及范本
2014/09/12 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
护士个人总结范文
2015/02/13 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python机器学习之决策树和随机森林
2021/07/15 Javascript
Go语言并发编程 sync.Once
2021/10/16 Golang
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis