php自动生成解压密码_PHP中快速生成随机密码的几种方式

本文介绍了一种简化密码生成函数的方法,通过str_shuffle函数替代rand,不仅代码量减少,还能生成包含字母、数字和符号的复杂密码,适用于短信验证码、服务器登录等场景。同时,作者展示了如何根据需求自定义密码类型。
摘要由CSDN通过智能技术生成

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值