上传图像时防止重复MD5

时间:2016-01-31 17:13:56

标签: php mysql

我正在上传带有生成的md5哈希的图片,但有时会发生重复。

  $rand = rand(0,10000);
  $md5  = md5($rand);

3 个答案:

答案 0 :(得分:2)

如果你在0,10000之间选择一个随机值,那么md5在你的情况下是重复是正常的,如果随机值是500,那么你的md5将有2个值相同的哈希。

相反,我建议你这样做:

  $uniqTime = microtime(); //microtime is the time unix in milliseconds that is the most unique number you can reach, you can use it alone or rehash it, even though I find hashing it to be useless
  $md5  = md5($uniqTime); // you can use the $uniqTime alone without rehashing it

答案 1 :(得分:0)

将此代码替换为真正唯一的哈希名称(即使在2个用户以相同的精确微秒上传文件的情况下):

  $hash = sha1(mt_rand(0,9999999999).time());

编辑:“真正独一无二”,我的意思是你不太可能因为你的使用而与此发生冲突,除非我们谈论数百万张图片......那么它可能会发生。

答案 2 :(得分:0)

为什么不将Php的uniqid函数用于名称?

<?php
$name = uniqid();