2015-11-06 149 views
3

我想在PHP中生成20個字符的哈希碼並插入到表中,哈希碼應該是唯一的。如何生成20個字符的字母數字唯一ID

後來哈希碼可以用來訪問表中的記錄。

<?php 
    echo uniqid(); 
    //generate 20 charcter alphanumeric id here 
?> 

我該怎麼做?

+1

https://github.com/ramsey/uuid - 雖然爲什麼它必須是20個字符?如果你施加這樣的限制,那麼這樣做的商業理由是什麼? –

回答

6

試試這個,它總是會根據microtime和隨機數生成一個不同的唯一字符串。

<?php 
    // Here microtime will be unique everytime 
    echo substr(md5(microtime()*rand(0,9999)),0,20); 
?> 
1

接受的答案是錯誤的,你正在用substr($random, 0, 20)函數調用刪除隨機性。

這將是更好的解決方案:

<?php 
echo bin2hex(openssl_random_pseudo_bytes(10)); 

此外,這是糟糕的主意,自己限制爲20個字符,如果字符串將只在數據庫中鍵使用。爲什麼不用uniqid($prefix, true)代替。