2006年1月12日木曜日

クレジットカードの番号をチェックする関数

クレジットカード番号のチェックデジットを利用した、カード番号チェックの関数を作成しました。

クレジットカード番号の法則は下記の通り。


  1. カード番号の奇数桁目を2倍にし、値が10以上になったら9を引く
  2. それぞれの数字を足す
  3. 2の結果が10の倍数になったら正しい番号。10の倍数で無ければ不正な番号


もちろん、この法則を通ったとしてもカード会社でオーソリかけないと本当に有効かどうかはわかりませんが、単純な入力ミス等を防ぐには役立ちます。
参考ページ:http://life7.2ch.net/test/read.cgi/credit/1089482722/

<?php
$credit_card_no = "4980123456789012";
if(checkCardDigit($credit_card_no)){ echo "OK牧場"; }
else{ echo "だめぽ"; }
function checkCardDigit($card_no)
{
$all = 0;
for ($i = 0; $i < 16; $i++)
{
if($i % 2){ $tmp = $card_no[$i]; }
else
{
$tmp = $card_no[$i] * 2;
if($tmp > 9){ $tmp = $tmp - 9; }
}
$all = $all + $tmp;
}
if($all % 10 == 0){ return true; }
else { return false; }
}
?>


◆2006/09/13追記
http://freeweb.supereva.com/tobiac/index.html?p
ここのページに、より深く作り込まれたクレジットカード番号チェック関数が公開されていました。checkcard.zipというやつです。
念のためこちらにもアップ→checkcard.zip

0 件のコメント:

コメントを投稿