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 12 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
必须收藏的php实用代码片段
Feb 02 PHP
示例详解Laravel的注册重构
Aug 14 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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编程最快明白》第三讲:php数组
2010/11/01 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
Javascript实现的分页函数
2007/02/07 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python实现汇率转换操作
2020/05/03 Python
档案室主任岗位职责
2014/02/12 职场文书
人事文员岗位职责
2014/02/16 职场文书
《雾凇》教学反思
2014/02/17 职场文书
青年文明号创建承诺
2014/03/31 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
禁烟标语大全
2014/06/11 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
大学入学感言
2015/08/01 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL