PHP随机生成信用卡卡号的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-17 15:52:15 浏览: 评论:0
这篇文章主要介绍了PHP随机生成信用卡卡号的方法,涉及php根据信用卡卡号规则生成卡号的技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
本文实例讲述了PHP随机生成信用卡卡号的方法,分享给大家供大家参考,具体分析如下:
这段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[] = "<div class='creditCardNumbers'>";
- $result[] = "<h3>$title</h3>";
- $result[] = implode('<br />', $numbers);
- $result[]= '</div>';
- return implode('<br />', $result);
- }
- #
- # Main
- #
- echo "<div class='creditCardSet'>";
- $mastercard = credit_card_number($mastercardPrefixList, 16, 10);
- echo output("Mastercard", $mastercard);
- $visa16 = credit_card_number($visaPrefixList, 16, 10);
- echo output("VISA 16 digit", $visa16);
- echo "</div>";
- echo "<div class='creditCardSet'>";
- $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 "</div>";
- # Minor cards
- echo "<div class='creditCardSet'>";
- $discover = credit_card_number($discoverPrefixList, 16, 3);
- echo output("Discover", $discover);
- $diners = credit_card_number($dinersPrefixList, 14, 3);
- echo output("Diners Club", $diners);
- echo "</div>";
- echo "<div class='creditCardSet'>";
- $enRoute = credit_card_number($enRoutePrefixList, 15, 3);
- echo output("enRoute", $enRoute);
- $jcb = credit_card_number($jcbPrefixList, 16, 3);
- echo output("JCB", $jcb);
- echo "</div>";
- echo "<div class='creditCardSet'>";
- $voyager = credit_card_number($voyagerPrefixList, 15, 3);
- echo output("Voyager", $voyager);
- echo "</div>";
- ?>
Tags: PHP随机生成信用卡
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)