使用Luhn's进行信用卡验证

我正在使用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,发现,签证和万事达卡? 我无法确认。


当昂贵的风险存在巨大潜力时,不要重新发明轮子。

有许多经过验证的图书馆 - 这里有一个:

http://framework.zend.com/manual/1.12/en/zend.validate.set.html#zend.validate.set.creditcard


根据维基百科,Luhn算法用于所有ISO / IED-7812卡号。 美国运通是旅游和娱乐类别,因此其数字以3开头。 Discover,Visa和Mastercard都属于银行和金融类别,因此他们的数字以45开头(而Discover也在推销,所以他们的数字也以6开头)。

简而言之,如果你的代码实现了Luhn算法,是的,它适用于美国运通,Discover,Visa和Mastercard。


这是一个jQuery插件:https://github.com/iHwy/jQuery-Validation-Extension

以及关于银行卡号http://en.wikipedia.org/wiki/Bank_card_numbers的wiki条目。

编辑:和一个PHP脚本:http://www.braemoor.co.uk/software/creditcard.php

链接地址: http://www.djcxy.com/p/70721.html

上一篇: credit card validation using Luhn's

下一篇: Credit Card Validation using PHP