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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
thinkphp实现分页显示功能
Dec 03 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的access操作类
2008/04/09 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Selenium定位元素操作示例
2018/08/10 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
python复合条件下的字典排序
2020/12/18 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
复古服装:RetroStage
2019/05/10 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
自主招生自荐书
2013/11/29 职场文书
少年闰土教学反思
2014/02/22 职场文书
产品质量保证书
2014/04/29 职场文书
收入证明申请书
2015/06/12 职场文书
公司费用报销管理制度
2015/08/04 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers