2017-01-09 45 views
-1

我遇到了一個奇怪的情況,在提交表單時我的頁面無法正確刷新。PHP頭()只在相對文件路徑上刷新

表格(page.php):

<form action="funcs/foo.php" method="post"> 
    <!-- various inputs --> 
    <input type="submit" value="Post it"> 
</form> 

和函數(foo.php):

// statements updating database, changing page layout... 
header("Location:$_SERVER[DOCUMENT_ROOT]/page.php"); 

通過改變標頭以下,page.php文件被刷新。我的問題是爲什麼?指定完整路徑和相對路徑有什麼區別?

+0

在這種情況下,我們應該使用相對路徑。 –

+0

Yuo可以使用如下所示: - –

+0

$ arrConfig ['siteRootURL'] ='http://'。 $ _SERVER ['HTTP_HOST']。 '/ project folder /'; define('SITE_ROOT_URL',$ arrConfig ['siteRootURL']);然後使用SITE_ROOT_URL代替$ _SERVER變量 –

回答

0

header(「Location:$ _ SERVER [DOCUMENT_ROOT] /page.php」);

首先,您引用數組索引錯誤(應該用引號括起來:$_SERVER['DOCUMENT_ROOT']),但除了這一點,你使用它錯了,因爲Location從不路徑運行在您的本地文件系統的情況下,你錯誤地認爲。所以,如果你想使用相對的,即/foo它並不意味着這是foo文件夾在你的文件系統的根目錄,但它是foo相對於document root。所以通過DOCUMENT_ROOT會給你提供錯誤的路徑,對瀏覽器無法訪問。

+0

雖然用雙引號括起來,但不需要在'DOCUMENT_ROOT'周圍放置單引號。除此之外,你是發現。在這種情況下,我不知道我在使用DOCUMENT_ROOT的想法。謝謝! –

-1

Separe

header("Location:$_SERVER[DOCUMENT_ROOT]/page.php");

header("Location:".$_SERVER['DOCUMENT_ROOT']."/page.php");

並檢查是否$ _ SERVER [ 'DOCUMENT_ROOT']被重定向確定。