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


Posted in PHP onMarch 23, 2015

本文实例讲述了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>";
?>

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

PHP 相关文章推荐
php中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
php生成扇形比例图实例
Nov 06 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 #PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 #PHP
php实现约瑟夫问题的方法小结
Mar 23 #PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 #PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 #PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
You might like
ThinkPHP分页实例
2014/10/15 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
详解python中eval函数的作用
2019/10/22 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
Python操作Jira库常用方法解析
2020/04/10 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
学历公证书范本
2014/04/09 职场文书
村党支部公开承诺书
2014/05/29 职场文书
中专生自荐信
2014/06/25 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
企业整改报告范文
2014/11/08 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android