2013-04-14 81 views
1

我的網站涉及的圖像。每當用戶上傳圖像時,它將被存儲在「imagefiles」文件夾中,但問題是用戶可以通過http查看該文件夾的所有圖像。爲了防止它,我對文件夾的.htaccess文件進行了更改,但是通過這樣做,我無法讀取圖像,以便在網頁上自行顯示。PHP中的私人文件夾?

那麼我怎樣才能讓這個文件夾,只有我可以用它來閱讀,當用戶試圖通過http訪問它應該說禁止?

回答

3

您可以禁用索引該文件夾,通過創建一個虛擬index.html頁面,或禁用默認指數在.htaccess

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

這將阻止人們瀏覽所有圖像的目錄列表,但不會阻止他們直接訪問圖像。

如果你想要更多的精細控制,你應該重寫所有的請求到該文件夾​​的PHP腳本將檢查$_REQUEST['REQUEST_URI'],以確定什麼樣的形象,他們試圖加載,那麼如果允許他們通過你選擇的邏輯來查看,你發送適當的標題爲它的圖像類型,並readfile('/path/to/image');

+0

我加入了虛擬index.php文件與重定向到主index.html的,但是當我試圖通過HTTP訪問它,它給下載彈出而不是重定向。任何想法我做錯了什麼? –

0

可能最靈活的方式來做你想做的就是讓圖像文件夾無法訪問web服務器。然後通過readfile()將它們顯示在您的頁面上(如Paulpro所述)。有一個很好的例子,如何在PHP手冊中做到這一點: http://www.php.net/manual/en/function.readfile.php 使用這種方式,你將能夠非常容易地控制用戶訪問您的網站上的圖像。

0

或者你可以使用mod_rewrite禁止訪問目錄列表:

RewriteEngine On 
RewriteBase/

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