PHP随机生成信用卡卡号的方法

本文实例讲述了PHP随机生成信用卡卡号的方法分享给大家供大家参考。具体分析如下:

这段PHP代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。

rush:PHP;"> PHP /* PHP credit card number generator copyright (C) 2006 Graham King graham@darkcoding.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License,or (at your option) any later version. This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or fitness FOR A PARTIculaR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not,write to the Free Software Foundation,Inc.,51 Franklin Street,Fifth Floor,Boston,MA 02110-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' is the start of the CC number as a string,any number of digits. 'length' is the length of the CC number to generate. Typically 13 or 16 */ function completed_number($prefix,$length) { $ccnumber = $prefix; # generate digits while ( strlen($ccnumber) < ($length - 1) ) { $ccnumber .= rand(0,9); } # Calculate sum $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; } # Calculate check digit $checkdigit = (( floor($sum/10) + 1) * 10 - $sum) % 10; $ccnumber .= $checkdigit; return $ccnumber; } function credit_card_number($prefixList,$length,$howMany) { for ($i = 0; $i < $howMany; $i++) { $ccnumber = $prefixList[ array_rand($prefixList) ]; $result[] = completed_number($ccnumber,$length); } return $result; } function output($title,$numbers) { $result[] = "
"; $result[] = "

$title

"; $result[] = implode('
',$numbers); $result[]= '
'; return implode('
',$result); } # # Main # echo "
"; $mastercard = credit_card_number($mastercardPrefixList,16,10); echo output("Mastercard",$mastercard); $visa16 = credit_card_number($visaPrefixList,10); echo output("VISA 16 digit",$visa16); echo "
"; echo "
"; $visa13 = credit_card_number($visaPrefixList,13,5); echo output("VISA 13 digit",$visa13); $amex = credit_card_number($amexPrefixList,15,5); echo output("American Express",$amex); echo "
"; # Minor cards echo "
"; $discover = credit_card_number($discoverPrefixList,3); echo output("discover",$discover); $diners = credit_card_number($dinersPrefixList,14,3); echo output("Diners Club",$diners); echo "
"; echo "
"; $enRoute = credit_card_number($enRoutePrefixList,3); echo output("enRoute",$enRoute); $jcb = credit_card_number($jcbPrefixList,3); echo output("JCB",$jcb); echo "
"; echo "
"; $voyager = credit_card_number($voyagerPrefixList,3); echo output("Voyager",$voyager); echo "
"; ?>

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...