WEB开发网
开发学院WEB开发PHP 信用卡效验程序 阅读

信用卡效验程序

 2001-01-09 16:31:00 来源:WEB开发网   
核心提示:<?php//// // Credit card validation routine //// May 15, 2000 //// By ariso //// validateCardCode($number[,$cardtype])//function validateCardCode($cardnumber
<?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); 
} 

?> 

Tags:信用卡 效验 程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接