2012-02-08 88 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