////////////////////////////////////////////// ///
// //
// クレジット カード検証ルーチン //
// 2000 年 5 月 15 日 //
// ariso 作成 //
// validateCardCode($number[,$cardtype]) //
/ //////////////////////////////////////////////// /
function validateCardCode($cardnumber, $cardtype = known)
{
//入力をクリーンアップ
$cardtype = strto lower($cardtype);
$cardnumber = ereg_replace( [-[:space:]], ,$cardnumber);
//タイプ固有のチェックを実行します
if ($cardtype ==不明) {
//タイプ固有のチェックをスキップします
}
elseif ($cardtype == mastercard){
if (strlen($cardnumber) != 16 || ! ereg( 5[1-5], $cardnumber)) 0 を返します。
}
elseif ($cardtype ==visa){
if ((strlen($cardnumber) != 13 && strlen($cardnumber) != 16) || substr($cardnumber, 0, 1) != 4)
0を返します。
}
elseif ($cardtype == amex){
if (strlen($cardnumber) != 15 || !ereg( 3[47], $cardnumber)) return a;
}
elseif ($cardtype == Discover){
if (strlen($cardnumber) != 16 || substr($cardnumber, 0, 4) != 6011) return 0;
}
else {
//無効な型が入力されました
return -1;
}
// MOD 10 チェックを開始します
$dig = toCharArray($cardnumber);
$numdig = sizeof ($dig);
$intIntJ = 0;
for ($intI=($numdig-2); $intI>=0; $intI-=2){
$dbl[$intIntJ] = $dig[$intI] * 2;
$intIntJ++;
}
$dblsz = sizeof($dbl);
$検証 =0;
for ($intI=0;$intI$add = toCharArray($dbl[$intI]);
for ($intIntJ=0;$intIntJ
$validate += $add[$intIntJ];
}
$add = ;
}
for ($intI=($numdig-1); $intI>=0; $intI-=2){
$validate += $dig[$intI];
}
if (substr($validate, -1, 1) == 0) 1 を返します。
それ以外の場合は 0 を返します。
}
// 文字列を受け取り、文字の配列を返します
function toCharArray($intInput){
$len = strlen($intInput);
for ($intIntJ=0;$intIntJ$char[$intIntJ] = substr($intInput, $intIntJ, 1);
}
return ($char);
}
?>
http://www.bkjia.com/PHPjc/532177.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/532177.html技術記事 //////////////////////////////////////////////// // // // // クレジット カード検証ルーチン // // 2000 年 5 月 15 日 // // ariso 作成 // // validateCardCode($number[,$cardtype]) // //////.. .