2016-12-29 5 views
0

、私はシンプルなPHPログインを作ったが、私はこのようなリダイレクトしようとしたとき:

$path = $_SERVER["DOCUMENT_ROOT"]; 
header("Location: $path/admin/index.php"); 

それは何もしなかったようにそれが見えました私は、ページをリフレッシュした後、私は、ログインして
を、私はこれに私のコードを変更した後:。

header("Location: ../admin/index.php"); 

それが動作します。

私にこれを説明してもらえますか?

ps。

+0

echo '$ path/admin/index.php'そして値 –

+0

を参照してください。@ sidyllのコメントでは今は意味があります。ありがとうございました。 – Fusyoo

答えて

1

ようなものを望んでいたので、内部サーバ演習ではありません。内部リダイレクトではないため、内部パスは処理しません。 DOCUMENT_ROOTを使用すると、ファイルが保存されているディレクトリへの内部サーバーパスが取得されます。

サイトのルートをURLとして参照する場合は、/を使用してください。あなたはおそらく、サブディレクトリにあった、と..adminがどこにあるかである親ディレクトリに翻訳されたため、あなたの..

header("Location: /admin/index.php"); 
header("Location: /"); # go to homepage, for example 

で働いていました。

1
$_SERVER["DOCUMENT_ROOT"]; 

私の悪い英語のため申し訳ありませんが/var/www/html/yourfolder/のようなパスを返しますが、あなたはwebsite.com/yourfolder/またはlocalhost/yourfolder/にリダイレクトする必要があります。

したがって動作しません。

1

$ pathの値を印刷しようとしましたか?

$ pathの値は実際のファイルの場所との相対値です。

$path = '/c/inetpub/sites/example/main/'

はおそらく、ヘッダがブラウザに送信され'/c/inetpub/sites/example/'または'/c/inetpub/sites/example/main/..'

+0

"$ pathの値は実際のファイルの場所と相対的です。" "$ path"は固定された彼のドキュメントルートです。何にも関係しません。 – sidyll

関連する問題