2012-07-26 191 views
1

我有一個設置,其中文件不能使用直接鏈接下載,除非使用HTTP身份驗證提供用戶名/密碼。從PHP設置HTTP用戶名/密碼

我想創建一個鏈接到下載的頁面,訪問時設置HTTP用戶名和密碼,所以用戶永遠不會看到HTTP身份驗證框。 (但是,如果他們嘗試直接下載文件,則不能)。

$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']提供了一種讀取但不設置這些值的方法。

+0

爲什麼不移動文件如果你似乎不關心它們是否實際上受到保護? – 2012-07-26 17:24:23

+1

等一下。所以你希望每個人都必須認證自己...但是你也希望訪問你的網站的每個人都能自動進行認證?這樣做有什麼意義? – Palladium 2012-07-26 17:24:42

+0

也許文件歸檔保存在與基於PHP的系統不同的服務器上,該系統將對其進行身份驗證。 – ghoti 2012-07-26 17:29:28

回答

1

這是一個壞主意!身份驗證是爲確保你是誰你說你是。相反,您將其用作控制訪問給定資源的方法。

如果你想強迫別人去通過網關頁面,生成一個隨機查詢字符串和匹配時,用header()設置HTTP元數據和fpassthru()sendfile()發送內容。

2

您可以通過在URL中放置一個用戶名和密碼,以達到HTTP-auth的鏈接:

http://username:[email protected]/path/to/file.zip 

注意,這個符號可能無法在所有瀏覽器都支持,或者支持它可能是用戶在瀏覽器中可配置。您需要在對您很重要的平臺上進行測試。

請注意,很有可能您的問題有更好的解決方案。

+0

我真的不認爲有更好的解決方案,除了不使用HTTP身份驗證。 – gview 2012-07-26 17:34:00

+0

這看起來像一個有前途的解決方案,但[看起來Internet Explorer不允許這樣](http://support.microsoft.com/kb/834489) – 8128 2012-07-26 18:25:23

+0

即阻止它,Firefox會引發警告。幾年前,有人發現你可以創建一個像http://bankofamerica.com:[email protected]這樣的網址,並且人們會點擊鏈接相信它導致美國銀行網站。 – 2012-07-26 18:34:05