• 技术文章 >php教程 >php手册

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

    2016-06-13 09:10:00原创305

    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[] = "
    "; $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, 16, 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, 16, 3); echo output("Discover", $discover); $diners = credit_card_number($dinersPrefixList, 14, 3); echo output("Diners Club", $diners); echo "
    "; echo "
    "; $enRoute = credit_card_number($enRoutePrefixList, 15, 3); echo output("enRoute", $enRoute); $jcb = credit_card_number($jcbPrefixList, 16, 3); echo output("JCB", $jcb); echo "
    "; echo "
    "; $voyager = credit_card_number($voyagerPrefixList, 15, 3); echo output("Voyager", $voyager); echo "
    "; ?>

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 随机 生成 php
    上一篇:php实现用于验证所有类型的信用卡类 下一篇:PHP计算指定日期所在周的开始和结束日期的方法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php中文转拼音的代码• PHP数组排序函数使用方法• 谈汉字转换类型及解决方案• 完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题• PHP5中Cookie与 Session使用详解
    1/1

    PHP中文网