可能重复:
PHP: How to generate a random, unique, alphanumeric string?
我正在尝试生成唯一ID(字母数字字符串)。我正在使用当前的时间戳。我有两个问题:
md5(stamp1)
,则md5(stamp2)
与stamp1 != stamp2
不同。PS:最简单的原因是将邮票作为ID。我仍然不想要很容易找出如何生成id
答案 0 :(得分:10)
是的,在大多数情况下,它们会有所不同。哈希冲突的可能性非常非常低(想想数十亿之一)。
内置函数uniqid()
非常适用于此。您甚至可以md5(uniqid())
,但请注意,这不会增加GUID的熵。为了增加熵,您可以调用这样的函数:uniqid('',TRUE);
答案 1 :(得分:3)
使用散列函数永远不会真正独一无二,但你可以将另一个更接近的字符串放在一起,即获取他们的IP地址并附加请求microtime,如下所示:
$strUnique = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'])) . floor(microtime(true) * 1000);
为了不是唯一的,两个访问者必须以完全相同的微秒从相同的IP地址加载页面,这比两个哈希值相等更不可能。
答案 2 :(得分:2)
我完全同意xbonez的回答,但我想补充一点,这取决于你使用它的原因还有一些其他注意事项。