2017-03-15 46 views
0

我已經簡單的下載腳本(用於WordPress的文件下載PHP防止直接訪問文件,但在下載腳本仍然使用

if($filesize) { 
     header('Content-Type: application/octet-stream'); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
     readfile($file_url); 
    } else {  
     echo '<p>No file found</p>'; 
    } 

我想防止用戶直接訪問他們訪問下載文件,因此,如果在瀏覽器中的路徑的用戶類型,文件不應該是入店。

我已經試過這與的.htaccess,但沒有結果。它是直接阻斷該文件,但還腳本將無法下載文件。

任何幫助?

謝謝!

+0

'$ _SERVER ['HTTP_USER_AGENT']'可以幫助 –

+0

只需將要訪問的文件存儲在無法通過正在運行的HTTP服務器訪問的目錄中。 – GordonM

+0

這種情況在這種情況下是不可能的,我將所有內容存儲在一個文件夾中(受保護的文件並且未受到保護) – kroma

回答

2

如果這些文件與PHP腳本位於同一個框中,請將它們移出webserver目錄,以便腳本可以訪問它們,但用戶不能。

+0

download.php腳本位於與要下載的文件不同的位置,不同的文件夾。 – kroma

0

我會假設用戶需要點擊某個按鈕來獲取文件,指的是post方法,如果不從後您展示主題的錯誤消息,

if($_SERVER['REQUEST_METHOD'] != 'POST'){ 
    echo 'Error: You cannot access this link Directly'; 
} 

IM也假設你有你的文件在單獨的文件夾,你可以用下面的規則,創造新的.htaccess文件:

Order Deny,Allow 
Deny from all 
+0

不,用戶點擊導致download.php?file_id = 66的鏈接,然後download.php提供文件下載。但是,如果用戶從哪個文件夾中找出它來自哪個文件夾,它仍然可以通過瀏覽器中的直接鏈接訪問。 – kroma

+0

然後讓我編輯我的答案 –

+0

您使用.htaccess文件? –

0

來解決這個問題,你可以做的是你可以保持腳本文件夾出在哪裏下載文件和.htaccess文件位於。

這樣用戶無法直接訪問下載文件,如果用戶在瀏覽器中輸入路徑,文件將不會被下載。他們只能通過腳本訪問文件。

希望它是有道理的。

相關問題