欢迎来到福编程网,本站提供各种互联网专业知识!

信用卡效验程序

发布时间:2006-10-09 作者: 来源:转载

////////////////////////////////////////////////////

////

// 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

$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);

}

?>

相关推荐