信用卡效验程序

?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 checksif
($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
enteredreturn -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;$intIntJsizeof($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
charactersfunction toCharArray($intInput){$len = strlen($intInput);for
($intIntJ=0;$intIntJ$len;$intIntJ++){$char[$intIntJ] =
substr($intInput, $intIntJ, 1);}return ($char);}?