PHP随机生成信用卡卡号的方法
本文实例讲述了PHP随机生成信用卡卡号的方法。分享给大家供大家参考。具体分析如下:
这段PHP代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。
<?php /* PHPcreditcardnumbergenerator Copyright(C)2006GrahamKinggraham@darkcoding.net Thisprogramisfreesoftware;youcanredistributeitand/or modifyitunderthetermsoftheGNUGeneralPublicLicense aspublishedbytheFreeSoftwareFoundation;eitherversion2 oftheLicense,or(atyouroption)anylaterversion. Thisprogramisdistributedinthehopethatitwillbeuseful, butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe GNUGeneralPublicLicenseformoredetails. YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware Foundation,Inc.,51FranklinStreet,FifthFloor,Boston,MA02110-1301,USA. */ $visaPrefixList[]="4539"; $visaPrefixList[]="4556"; $visaPrefixList[]="4916"; $visaPrefixList[]="4532"; $visaPrefixList[]="4929"; $visaPrefixList[]="40240071"; $visaPrefixList[]="4485"; $visaPrefixList[]="4716"; $visaPrefixList[]="4"; $mastercardPrefixList[]="51"; $mastercardPrefixList[]="52"; $mastercardPrefixList[]="53"; $mastercardPrefixList[]="54"; $mastercardPrefixList[]="55"; $amexPrefixList[]="34"; $amexPrefixList[]="37"; $discoverPrefixList[]="6011"; $dinersPrefixList[]="300"; $dinersPrefixList[]="301"; $dinersPrefixList[]="302"; $dinersPrefixList[]="303"; $dinersPrefixList[]="36"; $dinersPrefixList[]="38"; $enRoutePrefixList[]="2014"; $enRoutePrefixList[]="2149"; $jcbPrefixList[]="35"; $voyagerPrefixList[]="8699"; /* 'prefix'isthestartoftheCCnumberasastring,anynumberofdigits. 'length'isthelengthoftheCCnumbertogenerate.Typically13or16 */ functioncompleted_number($prefix,$length){ $ccnumber=$prefix; #generatedigits while(strlen($ccnumber)<($length-1)){ $ccnumber.=rand(0,9); } #Calculatesum $sum=0; $pos=0; $reversedCCnumber=strrev($ccnumber); while($pos<$length-1){ $odd=$reversedCCnumber[$pos]*2; if($odd>9){ $odd-=9; } $sum+=$odd; if($pos!=($length-2)){ $sum+=$reversedCCnumber[$pos+1]; } $pos+=2; } #Calculatecheckdigit $checkdigit=((floor($sum/10)+1)*10-$sum)%10; $ccnumber.=$checkdigit; return$ccnumber; } functioncredit_card_number($prefixList,$length,$howMany){ for($i=0;$i<$howMany;$i++){ $ccnumber=$prefixList[array_rand($prefixList)]; $result[]=completed_number($ccnumber,$length); } return$result; } functionoutput($title,$numbers){ $result[]="<divclass='creditCardNumbers'>"; $result[]="<h3>$title</h3>"; $result[]=implode('<br/>',$numbers); $result[]='</div>'; returnimplode('<br/>',$result); } # #Main # echo"<divclass='creditCardSet'>"; $mastercard=credit_card_number($mastercardPrefixList,16,10); echooutput("Mastercard",$mastercard); $visa16=credit_card_number($visaPrefixList,16,10); echooutput("VISA16digit",$visa16); echo"</div>"; echo"<divclass='creditCardSet'>"; $visa13=credit_card_number($visaPrefixList,13,5); echooutput("VISA13digit",$visa13); $amex=credit_card_number($amexPrefixList,15,5); echooutput("AmericanExpress",$amex); echo"</div>"; #Minorcards echo"<divclass='creditCardSet'>"; $discover=credit_card_number($discoverPrefixList,16,3); echooutput("Discover",$discover); $diners=credit_card_number($dinersPrefixList,14,3); echooutput("DinersClub",$diners); echo"</div>"; echo"<divclass='creditCardSet'>"; $enRoute=credit_card_number($enRoutePrefixList,15,3); echooutput("enRoute",$enRoute); $jcb=credit_card_number($jcbPrefixList,16,3); echooutput("JCB",$jcb); echo"</div>"; echo"<divclass='creditCardSet'>"; $voyager=credit_card_number($voyagerPrefixList,15,3); echooutput("Voyager",$voyager); echo"</div>"; ?>
希望本文所述对大家的php程序设计有所帮助。