【发布时间】:2011-12-15 08:17:23
【问题描述】:
我有一个小脚本,用于生成 25 个字符的随机字符串。它在大约 70% 的时间里工作,而其他时候它创建的字符串只有 10 个。
$unique = substr(md5(microtime()),rand(0,26),25);
我的目标是生成一个随机的(小写)字母和数字字符串,而不必创建函数
【问题讨论】:
-
只有 10 是指只有 10 个字符还是别的什么?
我有一个小脚本,用于生成 25 个字符的随机字符串。它在大约 70% 的时间里工作,而其他时候它创建的字符串只有 10 个。
$unique = substr(md5(microtime()),rand(0,26),25);
我的目标是生成一个随机的(小写)字母和数字字符串,而不必创建函数
【问题讨论】:
这是因为您使用 rand(0, 26) 将其切割成随机长度。
试试这个:
$unique = substr(md5(microtime()), 0, 25);
【讨论】:
不要使用 md5(microtime())。你可能认为它比 md5(rand()) 更安全,但事实并非如此。
通过大量尝试和同步方法(如您网站上的时钟),您可以将 microtime() 的结果预测到毫秒。
使用 md5(rand())
或者如果您希望它更安全,请使用 md5(microtime().rand())
【讨论】: