关于为上载的文件生成文件名

时间:2015-11-13 10:47:57

标签: php forms file-upload upload

我只是从表单上传文件,我也不确定生成文件名的方法..

在哪种情况下我应该使用这样的东西:

 sha1(uniqid(mt_rand(), true))

我应该使用这个:

uniqid()

2 个答案:

答案 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()

我更喜欢第二个。