データベースにクエリを実行せずに、各メンバーはログインして、数字と文字の重複しない組み合わせで会員カード番号を生成します。
レンダリングは次のとおりです:
5桁のナンバープレート番号、10桁の証明書番号、注文シリアル番号、短縮URLなど、桁数に制限がある膨大なデータに番号を付けたい場合、 16 進数の計算を使用して、桁数に一致する一意の数値を取得します。
~文字 Z は 35 を表すなど、値 0 ~ 35 をそれぞれ表すために 0 ~ Z (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ) を使用します。この場合、5 桁の数値を取得したいのですが、最大の情報量は 36 の 5 乗、36^5 = 60466176 です。つまり、最大 5 桁の数値は 10 進数に相当します: 60466176。 。
この記事ではデモンストレーションを目的として、クラブが 10 桁の会員カード番号のバッチを発行すると仮定します。会員カード番号は、3 桁の都市番号 + 5 桁のカード番号コード + 2 桁の小切手で構成されます。コード。都市番号は市外局番で表されます。たとえば、755 は深センを表します。次の 2 つのチェック コードは、特定のアルゴリズムによって生成されます。コードはカード番号が正当であることを確認するためのものです。この場合、当社が生成する10桁のカード番号は最大6,000万件以上の会員カード番号に相当し、重複のない唯一のカード番号となります。
PHP
PHPを使用して10進数を16進数に変換します。
リーリー
Code クラスを定義し、最初にパスワード辞書、つまり 0 から Z に対応する値を定義します。encodeID($int, $format) メソッドのパラメータ $int は数値を表し、$format はその値を表します。 encodeID(123456789,5) などの桁の長さ 123456789 という数値を 5 桁の 36 桁の数値に変換することを意味し、メソッド decodeID($ids) を使用して 36 桁の数値を 10 進数に変換します。
リーリー
上記のように、実際にはカード番号 888888 (8 の 6 桁) の会員番号を表す 5 桁のカード番号を取得できます。実際の変換は 5 桁の番号 0J1VC です。
次に、都市番号とチェック コードを追加します。都市番号はすでに定義されており、チェック コードは特定のアルゴリズムを通じて取得されます。この例では、最初の 3 つの都市番号と 5 つの md5 を追加します。カード番号を暗号化し、md5 値の最初の 2 桁をチェック コードとして取得し、番号の後の 2 桁のチェック コードを取得します。
リーリー
実際のアプリケーションでは、番号が一意であることを確認するためにデータベースを通じて 10 進数を取得し、上記のコードを組み合わせて最終的に 10 桁の重複しない会員カード番号を生成します。
http://www.bkjia.com/PHPjc/1049128.html