2010-08-19 82 views
1

我有一個PHP腳本呈現一個圖像(與imagick),並將其保存到某個目錄"SITE_ROOT.$filePath",然後做一個header('Location: ' . SITE_ROOT.$filePath),它重定向到的文件是一個PNG圖像。頭位置無法正常工作

如果我直接轉到路徑,就像在URL欄中輸入一樣,我可以保存圖像,一切正常,但是當我依靠腳本重定向我時,我嘗試右擊並保存圖像它不承認我實際上試圖保存圖像,它認爲我試圖將其保存爲名爲「Driver」的非類型文件,該文件是腳本頁面的名稱。

我不知道這裏有什麼問題,當然頭位置應該把我帶到圖片上,並且在重定向後沒有'Driver'文件的記錄?

同樣的事情發生在redirect()太btw。

在此先感謝您的幫助!

編輯:此問題已通過在標題命令之後放置die()解決。

+2

先調試:'SITE_ROOT。$ filePath'包含什麼?你能顯示重定向的完整代碼嗎? – 2010-08-19 08:05:27

+0

發生了一些錯誤? – pltvs 2010-08-19 08:07:47

+1

我打賭啤酒腳本不會在'header()'命令後死()'。但只有顯示代碼才能確定。 – 2010-08-19 08:10:09

回答

5

您正在使用不與標頭位置一起使用的文件路徑。你應該使用網址。

最好的做法是在標頭位置使用絕對網址。 PHP文件說:

HTTP/1.1需要一個絕對URI作爲 參數»位置:包括 方案,主機名和絕對路徑, 但有些客戶接受相對URI。 (Source

也總是退出腳本,因爲否則根據我的經驗,在某些情況下重定向後可能仍會執行代碼。因此,一個很好的例子是這樣的:

header("location:http://www.mysite.com/path/to/myfile.php"); 
exit; 

通常你會使用一個服務器變量這種情況:

$url = $_SERVER["HTTP_HOST"]."/path/to/myfile.php"; 
header("location:".$url); 
exit; 

乾杯!

1

header('Location:'。$ filePath);

SITE_ROOT是服務器上htdocs目錄的位置;但標題位置應該是文件的路徑相對到htdocs目錄

相關問題