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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
php 常用类汇总 推荐收藏
May 13 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 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
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP生成HTML静态页面实例代码
2008/08/31 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
关于幼儿的自我评价
2013/12/18 职场文书
银行贷款委托书范本
2014/10/11 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
k8s部署redis cluster集群的实现
2021/06/24 Redis
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis