PHP は、数字と文字の一意の組み合わせで 12 桁の会員カード番号を生成します データベースにクエリを実行せずに、ログインする各メンバーは、数字と文字の一意の組み合わせで会員カード番号を生成します。 共有先: もっと見る -----解決策--------------------------------最も簡単に考えられるのは、乱数を使用することですが、2 回の結果が異なることを証明することはできません MD5 は 32 ビットの結果文字列を生成し、MD5 には「衝突」があることが証明されています。つまり、2 つの異なるコンテンツが同じ MD5 値を持ちます 同様に、切り詰められた MD5 値が元の文字列と同じ一意性を持つことを証明することはできません したがって、時間をパラメータとして使用する方が安全です function foo() { $o = $last = ''; do { $last = $o; usleep(10); $t = explode(' ', microtime()); $o = substr(base_convert(strtr($t[0].$t[1].$t[1], '.', ''), 10, 36), 0, 12); }while($o == $last); return $o; } ログイン後にコピー もちろん、この生成アルゴリズムにも限界があります。 12 桁の 16 進数には、最大で pow(36, 12) の状態があります 合計が pow(36, 12) を超えると必然的に重複が発生します