信用卡效验程序PHP

 <?php 
 

   
//                                                                                                //     
// Credit card validation routine                                  //   
// May 15, 2000                                                                      //   
// By ariso                                                                              //   
// validateCardCode($number[,$cardtype])                    //   
   


function validateCardCode($cardnumber, $cardtype =    'unknown')
 
          //Clean up input   

        $cardtype = strtolower($cardtype);   
        $cardnumber = ereg_replace( '[-[:space:]]',    '',$cardnumber);     

          //Do type specific checks   

        if ($cardtype ==    'unknown') {   
                  //Skip type specific checks   
         
        elseif ($cardtype ==    'mastercard'){   
                if (strlen($cardnumber) != 16 || !ereg( '5[1-5]', $cardnumber)) return 0;   
         
        elseif ($cardtype ==    'visa'){   
                if ((strlen($cardnumber) != 13 && strlen($cardnumber) != 16) || substr($cardnumber, 0, 1) !=    '4')   

return 0;   
         
        elseif ($cardtype ==    'amex'){   
                if (strlen($cardnumber) != 15 || !ereg( '3[47]', $cardnumber)) return a;   
         
        elseif ($cardtype ==    'discover'){   
                if (strlen($cardnumber) != 16 || substr($cardnumber, 0, 4) !=    '6011') return 0;   
         
        else {   
                  //invalid type entered   
                return -1;   
         

          // Start MOD 10 checks   

        $dig = toCharArray($cardnumber);   
        $numdig = sizeof ($dig);   
        $intIntJ = 0;   
        for ($intI=($numdig-2); $intI>=0; $intI-=2){   
                $dbl[$intIntJ] = $dig[$intI] * 2;   
                $intIntJ++;   
                 
        $dblsz = sizeof($dbl);   
        $validate =0;   
        for ($intI=0;$intI<$dblsz;$intI++){   
                $add = toCharArray($dbl[$intI]);   
                for ($intIntJ=0;$intIntJ<sizeof($add);$intIntJ++){   
                        $validate += $add[$intIntJ];   
                 
        $add =    '';   
         
        for ($intI=($numdig-1); $intI>=0; $intI-=2){   
                $validate += $dig[$intI];     
         
        if (substr($validate, -1, 1) ==    '0') return 1;   
        else return 0;   
 

// takes a string and returns an array of characters   

function toCharArray($intInput){   
        $len = strlen($intInput);   
        for ($intIntJ=0;$intIntJ<$len;$intIntJ++){   
                $char[$intIntJ] = substr($intInput, $intIntJ, 1);           
         
        return ($char);   
 
?>   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值