2013-05-26 64 views
-2

我試圖隱藏我的產品文件的位置,所以我在購買後用PHP header啓動下載服務器端。有沒有可能發現文件的網址?使用php開始下載,是否可以查看下載鏈接?

使用下面的代碼

if (file_exists($_SERVER['DOCUMENT_ROOT']."/files/$file")) { 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 
exit; 
} 

回答

1

像現在這樣流式傳輸結果,源對客戶端是隱藏的。輸出似乎來自PHP腳本,然後

1

瀏覽器可以選擇跟隨header('Location: ');與否,所以是的,他們可以。

我建議他們流給用戶,使用類似readfile();

+0

更新與實際代碼的問題。你認爲這個鏈接可以用我的代碼發現嗎?如果是的話,我應該改變什麼? – Xperplay

0

這個問題的答案是生成綁定到一個文件,一個唯一的哈希並將其存儲在表中。然後,您將該散列的用戶重定向到像/download/n43j234jb3434這樣的文件。這個散列是一次性使用。您可以使用readfile()

0

下載文件使用位置標題,您基本上告訴客戶端文件的位置。另一個選擇是讓PHP將文件提供給客戶端,而不是重定向它們。

+0

對不起,但他已經過時了,他修改了這個問題 –