php產生12位不重複數目字字母組合會員卡號

來源:互聯網
上載者:User
php產生12位不重複數字字母組合會員卡號
在不查詢資料庫的情況下,每個會員登入進來會產生一個數字字母組合不重複的會員卡號。

分享到: 更多


------解決方案--------------------
讓人最容易想到的是使用隨機數,但是你無法證明兩次的結果一定不相同
MD5產生32位的結果串並且已經證明了MD5存在“碰撞”:兩個不同的內容具有相同的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位的36進位數最多有 pow(36, 12) 種狀態
當總量超過 pow(36, 12) 時,重複還是必然發生的
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.