1

我有一个不断增长的网站,其中包含 4 种尺寸的大约 30k 图像,总共 120k。我目前的解决方案是将它们存储在数据库中,从我在堆栈 oveflow 上阅读的内容来看,这似乎是一个非常糟糕的主意。

我开始明白为什么了。我注意到性能急剧下降。认为显而易见的解决方案是将这些图像移动到文件夹设置中,我想使用用户 ID 作为目录名称,然后有一个公共和私有子目录。

结构如下所示:

/54869
    /public
        /size_1/img1.jpg
        /size_2/img1.jpg
        /size_3/img1.jpg
        /size_4/img1.jpg
    /private
        /size_1/img2.jpg
        /size_2/img2.jpg
        /size_3/img2.jpg
        /size_4/img2.jpg

保护此私人文件夹并仅在文件所有者授予权限的情况下才向其他用户提供访问权限的最佳方法是什么?

我还想阻止用户简单地查看任何文件夹的内容,但我想我可以执行检查客户端来解决这个问题。

有什么想法或建议吗?

4

2 回答 2

2

您可以使该文件夹无法从 Web 访问(例如,将文件夹放在外面htdocs或添加 .htaccess 规则)。

创建一个 PHP 脚本来处理对私有图像的所有请求。该脚本必须执行以下操作:

  • 检查用户是否已通过身份验证
  • 检查用户是否有权查看请求的图像
  • 打开图像并将其打印到浏览器(您需要设置正确的 http 标头以确保内容被视为图像)

然后,在您的 HTML 中,只需指向/secret_image.php?id=3或者您可能想要使用图像的路径/secret_image.php?p=/54869/public/size_1/img1.jpg

于 2012-06-23T16:37:13.077 回答
0

你可以试试这个

imageViewer.php?imgID=XXX;     where XXX=hashFunction(salt.imgName)

并在imageViewer.php中进行所有处理,例如用户是否有权限!

于 2012-06-23T16:35:00.107 回答