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 相关文章推荐
消息持续发送的完整例子
Oct 09 PHP
PHP4实际应用经验篇(3)
Oct 09 PHP
php下使用SMTP发邮件的代码
Jan 10 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
PHP自动生成表单代码分享
Jun 19 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP分享图片的生成方法
Apr 25 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
php写入txt乱码的解决方法
Sep 17 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的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
splice slice区别
2006/10/09 Javascript
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
理解javascript闭包
2015/12/15 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
中班开学寄语
2014/04/04 职场文书
《画风》教学反思
2014/04/16 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
英语专业求职信
2014/07/08 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
大学生创业计划书
2019/06/24 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android