我正在上传带有生成的md5哈希的图片,但有时会发生重复。
$rand = rand(0,10000);
$md5 = md5($rand);
答案 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();