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

Php 使用Luhn'进行信用卡验证;s,php,credit-card,luhn,Php,Credit Card,Luhn,我正在使用Luhn算法进行信用卡验证:我只需要看看这个号码是否是有效的信用卡号码 $number=clean($_GET['number']); if (LuhnCheck($number) == 0) { echo "credit card valid"; } else { echo "invalid"; } function LuhnCheck($strDigits) { $sum = 0; $alt = false;

我正在使用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;
    }
上述内容是否适用于美国运通、discover、visa和万事达卡?我无法确认。

这里有一个jquery插件:

还有一个关于银行卡号的维基条目

编辑:
还有一个php脚本:

根据Wikipedia,所有卡号都使用了。美国运通属于旅游和娱乐类,因此其编号以
3
开头。Discover、Visa和Mastercard属于银行和金融类别,因此它们的编号以
4
5
开头(Discover也属于商品销售,因此它们的编号也以
6
开头)


简而言之,如果您的代码实现了Luhn算法,是的,它将适用于美国运通、Discover、Visa和万事达卡。

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

有许多经过验证的库—这里有一个:


您想在不测试的情况下部署信用卡验证程序吗?此处不接受代码审查问题。这不是一个免费的软件测试服务。也许他确实测试了它,而他的卡不是其中之一。。嗯。。。没关系,网上有很多虚拟信用卡的资料。不过,它们通常是不同的,这取决于您打算在哪里使用它们。记住,他们仍然应该使用算法。客户端验证解决方案还不够好,ZEND应该是最简单的方法。谢谢@我不是在要求代码审查。我没有所有的卡片。我会考虑FuzzyUnlop和CanSpice的建议。链接似乎已断开。链接再次未断开