2013-10-24 69 views
1

簡短版本:
如何使用header()來搬遷到C:\Abyss Web Server\htdocs\database\pfs\max\files\public\sdf.png

徹底版本:
目前我堅持着這片代碼:PHP header()函數C://

header("Location: ".ROOT_URL."\database\pfs\\".$_GET["u"]."\\files\public\\".$c); 

(不完全情況下,但它並不需要在這種情況下,我已經成功地追蹤我自己的原因)。
$c是在上下文中聲明的文件名,而$_GET["u"]是「所有者」的名稱。 ROOT_URL被定義爲:define("ROOT_URL", "file://\Abyss%20Web%20Server\htdocs");,它只是服務器目錄的路徑(我也嘗試過define("ROOT_URL", "C:/\Abyss%20Web%20Server\htdocs");,但是那裏沒有運氣)。無論如何,藉此,我希望用戶能夠通過$_GET["u"]下載上傳的文件。問題是,我每次都得到一個404錯誤......而且,從實驗中,我得出結論:header()函數不能很好地處理重定向。

不知道爲什麼會發生這種情況,但我認爲它與file://c:/有關。我的服務器目前在本地託管,因此我需要使用這些方法(這麼長時間)。答案將非常感激,因爲我一直堅持這個現在一段時間...

+0

我不明白。您是否試圖讓PHP網站在沒有網絡服務器的情況下運行? – Havenard

+0

我有一個本地託管的Web服務器與工作的PHP。 – Max

回答

3

如果它是一個本地文件系統的鏈接,你需要預先file://協議前綴:

header('Location: file://C:\\path\\to\\file'); 

如果你省略了,客戶端(瀏覽器)會將其解釋爲http://C:\\path\\to\\file

+0

謝謝,當我訪問我的電腦時,我會看看它。 – Max

+0

仍然無法使用。這是在header()中填充參數的內容,沒有任何預定義的常量或變量:'Location:file:// C:\\ Abyss Web Server \\ htdocs \\ database \\ pfs \\ max \\ files \\ public \\ sdf.png'(我嘗試了使用和不使用'%20'字符)。正確的路徑是:'C:\ Abyss Web Server \ htdocs \ database \ pfs \ max \ files \ public \ sdf.png'。我仍然在所有瀏覽器中獲得相同的結果。 – Max

+0

@Max我很遺憾沒有Windows進行測試。重要的是'file://'前綴和windows目錄分隔符的合適掩碼(我假設)。嘗試打開一個本地html文件,右鍵單擊「在瀏覽器中打開」。然後你就可以看到這些URL看起來像 – hek2mgl