将PHP更新到5.3.26后,PHP uniqid()不再是唯一的

时间:2013-08-01 14:17:14

标签: php unique zend-server

其他人发现更新到5.3.26后PHP不再为uniqid()生成唯一值?我之前的版本是5.3.16。

这不是一个小问题。我的DOM ID是使用该函数为所有jQuery UI按钮生成的,其中很多都有重复的ID。

我已将代码从uniqid("button")更改为uniqid("button",true),但未更改结果。仍然有重复的ID。

将Zend Server免费版更新到最新版本后会发生这种情况。

有解决方案吗?重构代码以使用整数计数器不是一项小任务,这意味着我必须重新测试所有内容。

2 个答案:

答案 0 :(得分:2)

好的,我能够通过以下方式解决我的问题。

变化:

 $id = uniqid('button');

 $id = str_replace('.','-',uniqid('button',true));

包括附加一个点的额外数字。这会创建无效的DOM ID(在我的情况下),所以我只需用短划线替换它。

答案 1 :(得分:0)

uniqid()仅提供概率的unicity。如果你真的想要一个唯一的ID,你将不得不使用递增的整数。

那说重复的uniqids的可能性非常小。你是否以任何方式截断了uniqid()的结果?