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源码之 ext/mysql扩展部分
Jul 17 PHP
php array_map()数组函数使用说明
Jul 12 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
PHP循环结构实例讲解
Feb 10 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
Laravel-添加后台模板AdminLte的实现方法
Oct 08 PHP
php5与php7的区别点总结
Oct 11 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python 切换root 执行命令的方法
2019/01/19 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python自动点赞功能的实现思路
2020/02/26 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
标准导师推荐信(医学类)
2013/10/28 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
学校节能减排倡议书
2014/05/16 职场文书
异地恋情人节寄语
2015/02/28 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
python3操作redis实现List列表实例
2021/08/04 Python
Go语言 详解net的tcp服务
2022/04/14 Golang