この記事では、主に、あらゆる種類のクレジット カード クラスを検証するための PHP 実装を紹介し、例を使用してクレジット カード クラスの実装原理と関連する使用テクニックを分析します。特定の基準値を必要とする友人がそれを参照できます
この記事の例では、あらゆる種類のクレジット カード クラスを検証するための PHP 実装について説明します。皆さんの参考に共有してください。詳細は以下の通りです
この php クラスは比較的完全で、さまざまなクレジット カードの検証に使用でき、クレジット カード番号の一般的なルールを検証し、さまざまな種類のクレジット カードの対象を絞った識別も実行します。
このコードはクレジット カード番号と有効期限を受け入れ、両方が有効な場合は TRUE を返し、それ以外の場合は FALSE を返します。
このプラグインは次のパラメータを受け入れます:
$number はクレジット カード番号の文字列を表します
$expiry クレジット カードの有効期限 (07/12 または 0712 の形式)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// プラグイン 32: クレジット カードを検証する // これは追加コードが提供された実行可能サンプルです // プラグインのみを入手するには、ダウンロード リンクをクリックしてください $card = "4567 1234 5678 9101"; $exp = "06/11"; echo "検証中: $card : $exp $result = PIPHP_ValidateCC($card, $exp); if ($result != FALSE) echo "カードが検証されました"; else echo "カードが検証されませんでした"; 関数 PIPHP_ValidateCC($number, $expiry) { // プラグイン 32: クレジット カードを検証する // // このプラグインはクレジット カード番号を受け入れます。 // 有効期限を指定し、TRUE または FALSE を返します。 // 詳細が期限を過ぎるかどうかに応じて // およびチェックサム検証が必要です // は: // // $number: クレジット カード番号 // $expiry: 形式の有効期限: // 07/12 または 0712 (2012 年 7 月の場合) $number = preg_replace('/[^d]/', '', $number); $expiry = preg_replace('/[^d]/', '', $expiry); $left = substr($number, 0, 4); $cclen = strlen($number); $chksum = 0; // ダイナースクラブ if (($left >= 3000) && ($left ($left >= 3600) && ($left ($left >= 3800) && ($left if ($cclen != 14) は FALSE を返します; //JCB if (($left >= 3088) && ($left ($left >= 3096) && ($left <= 3102) || ($left >= 3112) && ($left ($left >= 3158) && ($left ($left >= 3337) && ($left <= 3349) || ($left >= 3528) && ($left if ($cclen != 16) は FALSE を返します; // アメリカン・エキスプレス elseif (($left >= 3400) && ($left ($left >= 3700) && ($left if ($cclen != 15) は FALSE を返します; // カルテブランシュ elseif (($left >= 3890) && ($left if ($cclen != 14) は FALSE を返します; // ビザ elseif (($left >= 4000) && ($left if ($cclen != 13 && $cclen != 16) は FALSE を返します; // マスターカード elseif (($left >= 5100) && ($left if ($cclen != 16) は FALSE を返します; // オーストラリアの銀行カード エルセイフ ($left == 5610) if ($cclen != 16) は FALSE を返します; // 発見 エルセイフ ($left == 6011) if ($cclen != 16) は FALSE を返します; // 不明 それ以外の場合は FALSE を返します; for ($j = 1 - ($cclen % 2); $j $chksum += substr($number, $j, 1); for ($j = $cclen % 2; $j { $d = substr($number, $j, 1) * 2; $chksum += $d } if ($chksum % 10 != 0) は FALSE を返します; if (mktime(0, 0, 0, substr($expiry, 0, 2), date("t"), substr($expiry, 2, 2)) < time()) FALSE を返します; TRUEを返す; } ?> |
ここで説明されている大家向けの php プログラムの設計が役立つことを望みます。