2017-01-09 6 views
-1

フォームを送信したときに私のページが正しくリフレッシュされない不思議な状況に遭遇しました。PHPのヘッダ()は、相対ファイルのパスでのみリフレッシュする

フォーム(page.php):

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

AND関数(foo.php):

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

以下にヘッダを変更することにより、page.phpがリフレッシュされます。

header("Location:../page.php"); 

私の質問はですか?絶対パスと相対パスの指定の違いは何ですか?
header("Location:".$_SERVER['DOCUMENT_ROOT']."/page.php");

+0

この場合、相対パスを使用する必要があります。 –

+0

Yuoは以下のように使用できます: - –

+0

$ arrConfig ['siteRootURL'] = 'http://'。 $ _SERVER ['HTTP_HOST']。 '/ project folder /'; define( 'SITE_ROOT_URL'、$ arrConfig ['siteRootURL']); $ _SERVER変数の代わりにSITE_ROOT_URLを使用してください –

答えて

0

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

まず、あなたは配列のインデックスが間違っを参照(それは引用符で囲む必要があります。$_SERVER['DOCUMENT_ROOT'])あなたは間違って仮定としてではなくこれとは別に、あなたがLocationとして間違ってそれを使用するあなたのローカルファイルシステムの文脈でのパスで動作することはありません。つまり、/fooという相対ファイルを使用する場合は、ファイルシステムのルートにあるfooというフォルダではありませんが、document rootに対してはfooです。したがって、DOCUMENT_ROOTを渡すと、間違ったパスがブラウザに届きません。

+0

二重引用符で囲まれていますが、 'DOCUMENT_ROOT'の前後に一重引用符を入れる必要はありません。それ以外は、あなたはスポットです。この場合、DOCUMENT_ROOTを使って何を考えているのか分かりません。ありがとう! –

-1

Separe

header("Location:$_SERVER[DOCUMENT_ROOT]/page.php");
と$ _SERVER [ 'DOCUMENT_ROOT']はOKリダイレクトしているかどうかを確認します。

関連する問題