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循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
PHP 正则表达式小结
Feb 12 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
Vue实现购物车功能
2017/04/27 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
Python发送email的3种方法
2015/04/28 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python秒算24点实现及原理详解
2019/07/29 Python
python yield关键词案例测试
2019/10/15 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Python常用数据分析模块原理解析
2020/07/20 Python
硕士研究生个人求职信
2013/12/04 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
纠风工作实施方案
2014/03/15 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
婚庆答谢词
2015/01/04 职场文书
实习单位意见
2015/06/04 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
服务器SVN搭建图文安装过程
2022/06/21 Servers