2016-05-04 14 views
1

私はそう...PHPはPHPリダイレクトの後も引き続き実行されますか?

header("Location: somesite.com/redirectedpage.php"); 

のように、私はちょうどのために、リダイレクトはどのように動作するかをしっかり理解を取得しようとしている... PHPの多くは、異なるシナリオに応じてリダイレクトし、ウェブサイトを作ってるんです有価証券。 私の質問は、PHPはこのヘッダコールの後に実行し続けますか?

たとえば、エコーはこのコードでも実行されますか?

function Redirect($URL) 
{ 
    header("Location: " . $URL); 
} 

Redirect("http://somesite.com/redirectedpage.php"); 
echo("Code still executed"); 

もしそうなら...リダイレクト機能をこれに変更しますか?エコーを実行せずにリダイレクトしますか?

function Redirect($URL) 
{ 
    header("Location: " . $URL); 
    exit(1); 
} 

Redirect("http://somesite.com/redirectedpage.php"); 
echo("Code still executed"); 

私はちょうど証券ため、リダイレクトはどのように動作するかをしっかり理解を取得しようとしています。

+4

すべての 'header()'は、レスポンスがブラウザに送信されたときに準備が整っているヘッダを__set__していますが、実際にはブラウザに応答を送信しないので、 'header()'あなたが明示的に実行を終了しない限り呼び出す –

+0

おそらく、リダイレクト後にハード・アウトをしたくないでしょう。あなたは他の処理を行うかもしれません。 – tadman

+2

実際には複数の 'header()'文を発行して異なる応答ヘッダの値を設定することができます(ヘッダをファイルダウンロード用に設定するなど)。 (そしてスクリプトの実行を終了する)、それ以外の場合は後続のすべてのheader()文を実行することはできません –

答えて

6

すべてheader()ステートメントはです。ウェブサーバー(Apache、nginxなど)のヘッダーをブラウザに送信します。ページにLocation:ヘッダーを追加しました。このヘッダーは、そのページにリダイレクトするようにブラウザに指示します。 echoを含め、PHPスクリプト内のその他すべてが実行されますが、新しい場所にリダイレクトされるため、おそらく表示されません。

0

headerコマンドは、コードの流れを中断しません。たとえそれが発生したとしても、あなたのページはまだ表示されていなくてもブラウザによってダウンロードされます。 404ページは、(エラーではあるが)リダイレクトが行われていない間にレンダリングされますが、ブラウザによってまだ処理されていると考えてください。

ヘッダー付きの場所ヘッダーよりも多くのヘッダーを出力できますが、そのほとんどはコード実行を停止したくないものです。コードの実行を停止したい場合は、exitを明示的に呼び出す必要があります。

関連する問題