2016-09-16 81 views
0

目前我的文件結構如下:訪問根目錄以外的文件與苗條和PHP

├── README.md 
├── app 
├── classes 
├── composer.json 
├── composer.lock 
├── database 
├── public 
├── templates 
├── users 
└── vendor 

裏面的users文件夾我的文件夾中,涉及到的登錄用戶的用戶名,每個都有自己的文件和文件夾由用戶定義。

我遇到的問題是我無法下載users目錄中的文件。目前,我的代碼通過移動public目錄中的users目錄進行工作,但是存在相當明顯的安全漏洞。我如何製作它,以便我的用戶目錄與此處顯示的根目錄相差一級,但仍可以通過public目錄進行訪問?

我已經嘗試使用RewriteRule users/ ../users/,但它似乎沒有工作。我能夠通過PHP訪問users目錄,而不是public文件夾中的我的前端控制器。

這是我第一個使用Slim的「真實」項目,所以我對這個整個前端控制器/ mvc類型的東西很陌生。任何幫助將是偉大的,謝謝!

+0

好的。所以重寫規則不會解決這個問題,因爲Web服務器上的重寫規則不會知道用戶是否已通過身份驗證。您需要在您的應用程序中編寫路由邏輯,以根據用戶的權限來提供用戶文件。在一個問題/答案中覆蓋範圍太廣泛。 – Devon

+0

@Devon如果我這樣做,當用戶點擊文件時,它會發送一個get請求,然後調用一個路由來獲取文件。這是否會成爲一種可行的方法去做這種事情?這條路線當然會驗證文件夾是他們的。 –

+0

是的,那將是你需要做的。在您的路由邏輯或控制器中,您需要驗證用戶是否可以訪問該文件,然後最有可能使用PHP來爲文件提供服務,因爲它無法在Web路徑中訪問。 – Devon

回答

1

在您的路由邏輯或控制器中,您需要驗證用戶是否有權訪問該文件,然後很可能使用PHP來爲該文件提供服務,因爲它無法在Web路徑中訪問。

在PHP中,您可以設置正確的HTTP標頭並使用readfile()向最終用戶提供文件。

http://php.net/manual/en/function.readfile.php

相關問題