////////////////////////////////////////////////////;;
////;;;
// 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);;;
};;
?>;;
标签: