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 foreach 参数强制类型转换的问题
Dec 10 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
php表单处理操作
Nov 16 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
基于swoole实现多人聊天室
Jun 14 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
Python判断telnet通不通的实例
2019/01/26 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
python飞机大战游戏实例讲解
2020/12/04 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
建议书怎么写
2014/03/12 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS