2012-01-20 236 views
0

我有一个用户上传图片文件的系统。我只希望特定用户能够访问这些文件,而不是任何人只是去example.php/image.jpg并查看任何用户的图像...谢谢如何防止直接访问文件?

回答

0

您可以添加以下到.htaccess文件,并将该文件拖放到您的图像的存储目录:

为了防止目录浏览:

Options All -Indexes 

为了防止图像盗链:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC] 
RewriteRule \.(gif|jpg|js|css)$ - [F] 

将mydomain.com替换为您自己的域名。

+0

谢谢......我仍然可以通过php访问它吗? – Jon

+0

嗨。是的,只能从您自己的域中的脚本访问,而不能访问任何其他域。 – BilalKat

+2

-1这可以防止盗链和目录浏览,但不允许针对每个用户提供个性化的图像权限 – Cyclone

4

只需将它们上传到Web根目录之外的目录,并有一个PHP脚本获取他们,并显示给用户,如果用户满足适当的要求。

+1

例如:如果web根目录为'/ var/www /',则可以将文件上传到'/ var/uploads /'。 – Raptor

+0

谢谢!你能给我一个如何获取文件的例子吗?我希望用户能够下载它。 – Jon

+0

使用像imagecreatefrompng这样的图像函数,然后使用imagepng来提供它。不要忘记你的标题!大多数图像类型都有这样的功能。 – Cyclone

1

您可以为每个用户创建目录。例如,如果用户名是JHON,您可以创建一个目录图像/ JHON /,然后用PHP来限制访问其他用户的目录

0

把在一个单独的目录,并在该目录中创建一个名为.htaccess包含以下:

deny from all

这将做你想做的。