現在網上購物越來越普及,所以對信用卡號碼的檢查也變得重要。要檢查信用卡號碼,一般可以用 LUHN 演算法來實現。現在大部份的主要信用卡也是使用 LUHN 演算法,包括 Visa, Master Card, American Express 及 Discover 等。LUHN 演算法只可以檢查信用卡號碼的合法性,而不會檢查信用卡其他資訊,包括是否過期。使用方法為:
1. 檢查信用卡號碼是否 16 位。
2. 將信用卡號碼切割成 16 個個別數字。
3. 將上面切割得的所有數字,由左至右起計,每逄單數位置的數值乘 2。
4. 將加總後所有結果都切割成個別數字再相加。
5. 將上面求得的總數求出 10 的餘數,如果餘數是 0 便表示信用卡號碼正確,否則便是錯誤。
以下是 PHP 使用 LUHN 演算法檢查信用卡號碼的函式:
PHP:
- <?php
- /* luhn_checker(): This is a small PHP function for checking valid *
- * credit card with LUHN algorithm *
- * *
- * Last updated: 26 August 2007 *
- * This is a free PHP script under GNU GPL version 2.0 or above *
- * Copyright (C) 2007 Sam Tang *
- * Feedback/comment/suggestions : http://www.real-blog.com/ */
- function luhn_checker($card_num){
- // 將非數字的字串移除
- $sum = 0;
- for($i=0; $i<strlen($card_num); $i++){
- if(($i % 2) == 0){
- // 在單數位置的數值乘 2
- $digit = $digit * 2;
- }
- if ($digit> 9) $digit = $digit - 9;
- $sum += $digit;
- }
- return TRUE;
- }else{
- return FALSE;
- }
- }
- /* Example
- if(luhn_checker("1234567812345678")){
- echo "Correct!";
- }else{
- echo "Wrong card number!";
- }
- */
- ?>
全站熱搜
留言列表