当前位置:Gxlcms > PHP教程 > 信用卡效验程序

信用卡效验程序

时间:2021-07-01 10:21:17 帮助过:2人阅读


//////////////////////////////////////////////////// 
//                        // 
// 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); 
} 

?> 

人气教程排行