信用卡效验程序

  •   2009-08-01/08:17
  • <?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);  
    }  

    ?>  

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多