2012-02-08 66 views
-1

我正在使用Luhn的算法进行信用卡验证:我只需要查看该号码是否是有效的信用卡号码。使用Luhn的信用卡验证

$number=clean($_GET['number']); 
if (LuhnCheck($number) == 0) 
{ 
    echo "credit card valid"; 
} 
else 
{ 
    echo "invalid"; 
} 

function LuhnCheck($strDigits) 
    { 
     $sum = 0; 
     $alt = false; 
     for($i = strlen($strDigits) - 1; $i >= 0; $i--) 
     { 
      if($alt) 
      { 
       $temp = $strDigits[$i]; 
       $temp *= 2; 
       $strDigits[$i] = ($temp > 9) ? $temp = $temp - 9 : $temp; 
      } 
      $sum += $strDigits[$i]; 
      $alt = !$alt; 
     } 
     return $sum % 10 == 0; 
    } 

上述工作是否适用于AMEX,发现,签证和万事达卡?我无法确认。

+4

你想没有测试它部署信用卡验证程序? – Borealid 2012-02-08 23:11:17

+4

代码审查问题在这里是不可接受的。这不是免费的软件测试服务。 – meagar 2012-02-08 23:12:26

+1

也许他DID测试了一下,他的牌不是其中的一个......呃......没关系。 – Problematic 2012-02-08 23:17:37

回答

1
+3

客户端验证解决方案不够 – veritas 2012-02-08 23:17:26

+1

ok http://www.braemoor.co.uk/software/creditcard.php – 2012-02-08 23:23:25

+0

伟大的ZEND应该是最简单的方法。谢谢! – Micheal 2012-02-09 00:02:50

5

根据维基百科,使用Luhn algorithm全部为ISO/IED-7812卡号。美国运通在旅游和娱乐类别,因此其数字从3开始。发现,签证和万事达卡属于银行和金融类别,因此它们的编号从45开始(并且发现也在销售中,因此它们的编号也以6开头)。总之,如果你的代码实现了Luhn算法,是的,它可以用于美国运通,Discover,Visa和万事达卡。

+0

@meager我不是要求代码审查。我没有所有这些卡。 我会考虑模糊推荐和CanSpice推荐的内容。 – Micheal 2012-02-08 23:48:15