我只是从表单上传文件,我也不确定生成文件名的方法..
在哪种情况下我应该使用这样的东西:
sha1(uniqid(mt_rand(), true))
我应该使用这个:
uniqid()
答案 0 :(得分:1)
uniqid()足以用于文件名。
但请注意,uniqid()不是sha1()都会让你获得绝对独特的字符串。因此,在将文件保存到IO之前,请检查具有该名称的文件是否已存在。
答案 1 :(得分:0)
我同意lukassteiner。他们不会给你绝对的独特性;使用GUID
。
您可以非常简单地定义GUID函数,如下所示:
function getGuid() {
return strtolower( sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X',
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(16384, 20479),
mt_rand(32768, 49151),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535)) );
// from the official PHP documentation
}
在我看来,你只是通过sha1
函数增加运行时(无论多小);你最好使用uniqid()
功能。但是,文档确实这样说:
警告强>
此函数不会创建随机字符串或不可预测字符串。此功能不得用于安全目的。使用加密安全随机函数/生成器和加密安全散列函数来创建不可预测的安全ID。
因此,如果您想要使用Cryptographically Secure randoms,您可以使用:
random_int()
openssl_random_pseudo_bytes()
我更喜欢第二个。