2011-12-15 70 views
1

我有一个脚本用于生成25个字符的随机字符串。它的工作原理时约70%,其他时候它创建为字符串只有10我在创建随机字符串时遇到了问题

$unique = substr(md5(microtime()),rand(0,26),25); 

我的目标是有(小写)字母和数字的随机字符串,而无需创建一个功能

+0

只有10你的意思是只或别的东西,10个字符? – 2011-12-15 08:21:33

回答

3

这是因为你正在用rand(0,26)将它切割成随机长度。

试试这个:

$unique = substr(md5(microtime()), 0, 25); 
+0

谢谢。这很好用! – Tiny 2011-12-15 08:33:14

0

不要使用MD5(microtime中())。你可能会认为它比md5(rand())更安全,但事实并非如此。

有了相当数量的尝试和同步方法(就像您网站上的时钟),可以预测microtime()的结果为毫秒。

使用MD5(RAND())

,或者如果你希望它是更安全的使用MD5(microtime中()。RAND())

+0

或者他可以使用内置函数uniq_id():) – 2012-01-11 18:29:03