PHP中的私人文件夹?

时间:2013-04-14 06:50:02

标签: php .htaccess directory private

我的网站处理图片。每当用户上传图像时,它将存储在“imagefiles”文件夹中,但问题是用户可以通过http在Web上查看该文件夹的所有图像。为了防止这种情况,我对要禁止的文件夹的.htaccess进行了更改,但是通过这样做我无法读取图像以在网页上显示它。

那么我该如何制作这个文件夹,只有我可以用来阅读它,当用户试图通过http访问它时应该说是禁止的?

3 个答案:

答案 0 :(得分:3)

您可以通过创建虚拟index.html页面或禁用.htaccess中的默认索引来禁用该文件夹的索引:

<Directory /path/to/image/folder>
    Options -Indexes
</Directory>

这将阻止人们浏览所有图像的目录列表,但不会阻止他们直接访问图像。

如果您想要更精细的控制,您应该将对该文件夹的所有请求重写为PHP脚本,该脚本将检查$_REQUEST['REQUEST_URI']以确定他们尝试加载的图像,然后如果允许他们通过任何方式查看它您选择的逻辑,您发送的图像类型的相应标题,以及readfile('/path/to/image');

答案 1 :(得分:0)

执行所需操作的最灵活方式可能是获取带有Web服务器无法访问的图像的文件夹。然后通过readfile()在页面上显示它们(如Paulpro所述)。有一个很好的例子,如何在PHP手册中这样做: http://www.php.net/manual/en/function.readfile.php 使用这种方式,您将能够非常轻松地控制用户访问您网站上的图像。

答案 2 :(得分:0)

或者您可以使用mod_rewrite禁止访问目录列表:

RewriteEngine On
RewriteBase /

RewriteRule ^imagefiles/?$ - [F,L,NC]