PHP中快速生成随机密码的几种方式

 更新时间:2017年04月17日 10:17:43   作者:EdisonChia  
本篇文章主要介绍了PHP中快速生成随机密码的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

思路是这样的,密码通常是英文字母和数字的混合编排,我们可以借助随机函数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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 在Laravel中使用DataTables插件的方法

    在Laravel中使用DataTables插件的方法

    DataTables 是一个 jQuery 的表格插件,记录一下在 Laravel 中使用的常用功能和用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • laravel添加角色和模糊搜索功能的实现代码

    laravel添加角色和模糊搜索功能的实现代码

    添加角色有很多种方法,角色添加显示页面路由、添加页面控制器等,在角色搜索功能中通过修改index控制器来实现,文中给大家提供laravel添加角色和模糊搜索功能的实现代码,一起看看吧
    2021-06-06
  • Yii2主题(Theme)用法详解

    Yii2主题(Theme)用法详解

    这篇文章主要介绍了Yii2主题(Theme)用法,结合实例形式分析了Yii2主题(Theme)的配置方式、函数与相关属性的使用技巧,需要的朋友可以参考下
    2016-07-07
  • PHP在弹框中获取foreach中遍历的id值并传递给地址栏

    PHP在弹框中获取foreach中遍历的id值并传递给地址栏

    这篇文章主要介绍了PHP在弹框中获取foreach中遍历的id值并传递给地址栏的相关资料,需要的朋友可以参考下
    2017-06-06
  • Laravel find in set排序实例

    Laravel find in set排序实例

    今天小编就为大家分享一篇Laravel find in set排序实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 利用谷歌 Translate API制作自己的翻译脚本

    利用谷歌 Translate API制作自己的翻译脚本

    这篇文章主要介绍了利用谷歌 Translate API制作自己的翻译脚本,需要的朋友可以参考下
    2014-06-06
  • PHP 微信支付类 demo

    PHP 微信支付类 demo

    这篇文章主要介绍了PHP 微信支付类 demo的相关资料,需要的朋友可以参考下
    2015-11-11
  • linux mint下安装phpstorm2020包括JDK部分的教程详解

    linux mint下安装phpstorm2020包括JDK部分的教程详解

    这篇文章主要介绍了linux mint下安装phpstorm2020包括JDK部分的教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 使用php显示搜索引擎来的关键词

    使用php显示搜索引擎来的关键词

    在访客从搜索引擎而来的第一个页面上显示访客搜索的关键词,根据这个关键词做出一些提高网站交互能力的改变,比如显示这个关键词相关的其它文章
    2014-02-02
  • 在PHP中操作Excel实例代码

    在PHP中操作Excel实例代码

    使用COM,可以在PHP中控制Excel。下面通过一个简单的示例来演示PHP如何与Excel相交互(示例中有详细的注释)
    2010-04-04

最新评论