我有一個腳本,只允許授權用戶上傳文件到某個文件夾。如何防止使用php公開下載文件?
但是我不知道如何阻止人們無需登錄自由下載。
我需要在PHP解決方案。
我用Google搜索周圍,但沒有直截了當至今。
目前在我的文檔根目錄我有一個文件夾名爲admin和一個叫做管理裏面上傳子文件夾。所以只有管理角色才能上傳。編輯和管理員都可以下載。在這種情況下我該怎麼辦?
請指教。
我有一個腳本,只允許授權用戶上傳文件到某個文件夾。如何防止使用php公開下載文件?
但是我不知道如何阻止人們無需登錄自由下載。
我需要在PHP解決方案。
我用Google搜索周圍,但沒有直截了當至今。
目前在我的文檔根目錄我有一個文件夾名爲admin和一個叫做管理裏面上傳子文件夾。所以只有管理角色才能上傳。編輯和管理員都可以下載。在這種情況下我該怎麼辦?
請指教。
把文件放在公共目錄根目錄外,或配置您的服務器不提供文件服務。只要您的服務器能夠愉快地使用有效的URL提供所有服務,您就無法用PHP來做到這一點。
如果你的文件是在/public_html/
文件夾,把它們從該文件夾中,並放置在如/secret_files/
,所以你的目錄結構看起來是這樣的:
public_html/
index.html
admin/
admin_index.php
secret_files/
my_secret_file.txt
的Web服務器配置爲僅在/public_html/
目錄文件服務解決方案,所以沒有人將有機會獲得目錄外(技術術語上述)它。
爲了使仍然有人來下載這些文件,請執行克萊圖斯建議,並使用readfile
通過PHP腳本「人工服務」的文件。 PHP仍然可以訪問文件系統的這些其他部分,因此您可以將其用作網守。
回答如何使用PHP密碼保護的問題: This應該解決您的問題。
有人找到密碼? – RageZ
如果他們找到密碼,很可能他們有權訪問您的FTP,所以無論如何你都會被搞砸。 – twodayslate
不要將文件存儲在文檔根目錄下的目錄中。
而是將它們移動到其他地方,然後PHP腳本可以通過編程確定是否有人可以下載它們,然後使用readfile()
或類似的東西將它們流式傳輸給用戶。
您還可以將Web服務器配置爲不從這個目錄中的文件服務,但那麼你需要PHP反正爲他們服務。它更簡潔,不要將它們放在文檔根目錄下。
嗨cletus,我沒有強大的編程,所以我需要問你更多的細節 1)哪裏是別的地方?目前在我的文檔根目錄中,我有一個名爲admin的文件夾和一個名爲uploads的子文件夾。所以只有管理角色才能上傳。編輯和管理員都可以下載。在這種情況下我該怎麼辦? –
@keisimone(1)將它們存儲在文檔根目錄之上,它可能像htdocs或public_html一樣。 – alex
@alex是的,我所有的文件都已經在public_html :)所以它的public_html> admin>上傳 –
是public webroot public_html? wat關於httpdocs? –
@keisimone查看更新的答案。 – deceze
謝謝。這更清楚。你們很酷。 –