PHP中快速生成随机密码的几种方式
思路是这样的,密码通常是英文字母和数字的混合编排,我们可以借助随机函数rand函数随机的选择一个长字符串的一部分。
functionrandom_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;
}
echorandom_code;//A1zYbN5X
我们使用rand函数的目的是为了产生随机的字符串,但是如果有一个函数可以做到的话,我们就没有必要使用rand函数了。
functionrandom_char($length=8,$chars=null){
if(empty($chars)){
$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
}
$chars=str_shuffle($chars);
$num=$length
可以看到不使用rand函数,而是使用str_shuffle函数,好处是大大减少了代码量。
更近一部的,我们的函数不仅可以生成随机的密码,还可以生成短信验证码,以及高强度的服务器登录密码。
functionrandom_code_type($length=8,$type='alpha-number'){
$code_arr=array(
'alpha'=>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'number'=>'0123456789',
'sign'=>'#$%@*-_',
);
$type_arr=explode('-',$type);
foreach($type_arras$t){
if(!array_key_exists($t,$code_arr)){
trigger_error("Cannotgeneratetype($t)code");
}
}
$chars='';
foreach($type_arras$t){
$chars.=$code_arr[$t];
}
$chars=str_shuffle($chars);
$number=$length>strlen($chars)-1?strlen($chars)-1:$length;
returnsubstr($chars,0,$number);
}
echorandom_code_type(8,"alpha-number-sign");#kXM*mC$S
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。