防止通过 PHP 重复上传图片

Aar*_*ron 2 php mysql

我编写了一个脚本来将图像上传到我网站的特定部分。

我需要做什么样的检查来检测是否有重复的条目试图通过表单上传?

示例:一位用户提交 firefoxlogo.jpg。几天后,另一个用户尝试提交 firefox.jpg,它是相同的图像,只是重命名了。

Lek*_*eyn 5

……同一张图……

与“二进制数据相同”或“图像看起来相似”相同吗?在第一种情况下,您可以使用sha1_file(对于 SHA1 哈希)计算文件的哈希。您永远不应该依赖文件名来检查文件是否唯一。例如,一个用户可以上传包含浏览器徽标的“firefox.png”,而其他人可以上传它的屏幕截图。散列具有固定长度(SHA1 为 40),这是使用文件名的另一个优势。

  • 我怀疑这是一个问题,因为计算完成一次。我刚刚用 N=100*5 对其进行了测试,对于 sha1,10MB 文件的平均时间为 44 毫秒。`dd if=/dev/urandom of=r10 bs=1M count=10;time php -r 'for($i=0;$i<100;$i++)sha1_file("r10");'`。相比之下,`php -r ''` 已经花费了 30 毫秒。 (2认同)