php编写批量生成不重复的卡号密码代码
程序员文章站
2022-07-18 15:06:31
闲的蛋疼的时候,顺便加强下自己对php中数组操纵的一些技巧,就写了下面的一段小代码,可以随机生成卡号密码对应的数组,并且自动去重复,思路没有,纯粹瞎掰。
<...
闲的蛋疼的时候,顺便加强下自己对php中数组操纵的一些技巧,就写了下面的一段小代码,可以随机生成卡号密码对应的数组,并且自动去重复,思路没有,纯粹瞎掰。
<?php header('content-type:text/html; charset=utf-8'); function makecard() { set_time_limit(0); //处理缓冲区 ob_end_clean(); ob_implicit_flush(true); echo str_pad(" ", 256); if(intval($_post['num']>0)) $num=intval($_post['num']); //数量 if(intval($_post['point']>0)) $point=intval($_post['point']); //点数 if(intval($_post['batch']>0)) $batch=intval($_post['batch']); //批号 if(($_post['ym']!="")) $ym=$_post['ym']; //发行年月 else $ym=date('ym'); if($num==0) return; $num=$num*100; //卡的张数,即记录数 echo "<p>开始 ".date("h:i:s")." "; for($i=1;$i<=$num;$i++) { $sn=sprintf("%02s%s%06s",$batch,$ym,$i); $seek=mt_rand(0,9999).mt_rand(0,9999).mt_rand(0,9999); //12位 $start=mt_rand(0,20); $str=strtoupper(substr(md5($seek),$start,12)); $str=str_replace("o",chr(mt_rand(65,78)),$str); $str=str_replace("0",chr(mt_rand(65,78)),$str); $row=array('sn'=>$sn,'password'=>$str,'created'=>time(),'point'=>$point); //查重 //在这里加插入数据的代码. print_r($row); } echo " 结束 ".date("h:i:s").""; printf("<br>成功生成:%s万个 %s点 的密码</p>",$num/1e4,$point); return $num; } //函数结束 $_post['num']=1; $_post['point']=10; $_post['batch']=10; $_post['ym']='1405'; echo makecard(); ?>
方法二:
<?php $numlen=16; $pwdlen=10; $c=100;//生成100组卡号密码 $snumarr=range(0,9); $spwdarr=array_merge($snumarr,range('a','z')); $cards=array(); for($x=0;$x< $c;$x++){ $tempnumstr=array(); for($i=0;$i< $numlen;$i++){ $tempnumstr[]=array_rand($snumarr); } $temppwdstr=array(); for($i=0;$i< $pwdlen;$i++){ $temppwdstr[]=$spwdarr[array_rand($spwdarr)]; } $cards[$x]['no']=implode('',$tempnumstr); $cards[$x]['pwd']=implode('',$temppwdstr); } array_unique($cards); print_r($cards); ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。