我的網站涉及的圖像。每當用戶上傳圖像時,它將被存儲在「imagefiles」文件夾中,但問題是用戶可以通過http查看該文件夾的所有圖像。爲了防止它,我對文件夾的.htaccess文件進行了更改,但是通過這樣做,我無法讀取圖像,以便在網頁上自行顯示。PHP中的私人文件夾?
那麼我怎樣才能讓這個文件夾,只有我可以用它來閱讀,當用戶試圖通過http訪問它應該說禁止?
我的網站涉及的圖像。每當用戶上傳圖像時,它將被存儲在「imagefiles」文件夾中,但問題是用戶可以通過http查看該文件夾的所有圖像。爲了防止它,我對文件夾的.htaccess文件進行了更改,但是通過這樣做,我無法讀取圖像,以便在網頁上自行顯示。PHP中的私人文件夾?
那麼我怎樣才能讓這個文件夾,只有我可以用它來閱讀,當用戶試圖通過http訪問它應該說禁止?
您可以禁用索引該文件夾,通過創建一個虛擬index.html
頁面,或禁用默認指數在.htaccess
:
<Directory /path/to/image/folder>
Options -Indexes
</Directory>
這將阻止人們瀏覽所有圖像的目錄列表,但不會阻止他們直接訪問圖像。
如果你想要更多的精細控制,你應該重寫所有的請求到該文件夾的PHP腳本將檢查$_REQUEST['REQUEST_URI']
,以確定什麼樣的形象,他們試圖加載,那麼如果允許他們通過你選擇的邏輯來查看,你發送適當的標題爲它的圖像類型,並readfile('/path/to/image');
可能最靈活的方式來做你想做的就是讓圖像文件夾無法訪問web服務器。然後通過readfile()將它們顯示在您的頁面上(如Paulpro所述)。有一個很好的例子,如何在PHP手冊中做到這一點: http://www.php.net/manual/en/function.readfile.php 使用這種方式,你將能夠非常容易地控制用戶訪問您的網站上的圖像。
或者你可以使用mod_rewrite禁止訪問目錄列表:
RewriteEngine On
RewriteBase/
RewriteRule ^imagefiles/?$ - [F,L,NC]
我加入了虛擬index.php文件與重定向到主index.html的,但是當我試圖通過HTTP訪問它,它給下載彈出而不是重定向。任何想法我做錯了什麼? –