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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
PHP 字符串分割和比较
Oct 06 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
js加解密 脚本解密
2008/02/22 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
js基于canvas实现时钟组件
2021/02/07 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
经理秘书岗位职责
2013/11/14 职场文书
结婚周年感言
2014/02/24 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
三八妇女节慰问信
2015/02/14 职场文书
教师辞职信范文
2015/02/28 职场文书
大学生思想道德自我评价
2015/03/09 职场文书