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者的疑难问答(1)
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP学习之数组值的操作
Apr 17 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP安全下载文件的方法
Apr 07 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
php中namespace及use用法分析
Dec 06 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
js禁止表单重复提交
2017/08/29 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
解读ES6中class关键字
2017/11/20 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
vue离开当前页面触发的函数代码
2020/09/01 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
如何安装ruby on rails
2014/02/09 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
工程采购员岗位职责
2014/03/09 职场文书
图书室标语
2014/06/21 职场文书
大学生实训报告总结
2014/11/05 职场文书
《去年的树》教学反思
2016/02/18 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
MySQL约束超详解
2021/09/04 MySQL
海弦WR-800F
2022/04/05 无线电