信用卡效验程序
author:一佰互联 2019-05-01 click:130
<?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); } ?>