2012-01-20 440 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

這將做你想做的。