PHP uniqid()在将PHP更新为5.3.26后不再是唯一的
还有人发现PHP在更新到5.3.26后不再为PHP uniqid()在将PHP更新为5.3.26后不再是唯一的,php,unique,zend-server,Php,Unique,Zend Server,还有人发现PHP在更新到5.3.26后不再为uniqid()生成唯一值吗?我以前的版本是5.3.16 这不是一个小问题。我的DOM ID是使用该函数为所有jQueryUI按钮生成的,其中很多按钮都有重复的ID 我已经将代码从uniqid(“按钮”)更改为uniqid(“按钮”,true),但它没有更改结果。仍然得到重复的ID 这是在将Zend Server free edition更新为最新版本后发生的 有解决办法吗?重构代码以使用整数计数器不是一项小任务,这意味着我必须重新测试所有内容。uni
uniqid()
生成唯一值吗?我以前的版本是5.3.16
这不是一个小问题。我的DOM ID是使用该函数为所有jQueryUI按钮生成的,其中很多按钮都有重复的ID
我已经将代码从uniqid(“按钮”)
更改为uniqid(“按钮”,true)
,但它没有更改结果。仍然得到重复的ID
这是在将Zend Server free edition更新为最新版本后发生的
有解决办法吗?重构代码以使用整数计数器不是一项小任务,这意味着我必须重新测试所有内容。uniqid()只提供了一种可能性。如果你真的想要一个唯一的ID,你必须使用递增的整数
也就是说,复制Uniqid的可能性非常小。您是否以任何方式截断uniqid()的结果?好的,我可以通过执行以下操作修复我的问题 更改:
$id = uniqid('button');
到
包括附加了一个点的额外数字。这会创建无效的DOM ID(在我的例子中),所以我只是用破折号替换它。没有,但从ID上看,uniqid的分数似乎不再是毫秒。因此,连续快速调用uniqid会产生重复的结果。我将附加一个计数器值,这将暂时修复它,但我必须停止使用uniqid。
$id = str_replace('.','-',uniqid('button',true));