3

こんにちは、私はこの機能を持っています

function fail($pub, $pvt = '')
{
    global $debug;
    $msg = $pub;
    if ($debug && $pvt !== '')
        $msg .= ": $pvt";

    $_SESSION['msg'] = $msg;
    header ("Location: /voting/"); 
    exit;
}

ページは、終了コマンドに到達する前にリダイレクトする必要がありますか? ただし、終了コマンドがないと、関数は正しく機能しません (リダイレクトされたはずなのに続行します)。どちらの場合もリダイレクトされるにもかかわらず、関数が終了しなかった場合にコードが続行する理由を誰かが知っている場合は説明できますか?

4

4 に答える 4

7

ブラウザは、スクリプトの終了後に応答全体を受信するまでリダイレクトしません。PHP スクリプト、ブラウザがリダイレクトしても停止しません。したがって、ブラウザがリダイレクトするはずのときにスクリプトを終了することが最善の方法です。

于 2012-07-05T08:07:02.560 に答える
0

スクリプトの実行を終了します。exit が呼び出された場合でも、シャットダウン関数オブジェクト デストラクタは常に実行されます。exit は言語構造であり、ステータスが渡されない場合は括弧なしで呼び出すことができます。

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
    or exit("unable to open file ($filename)");

http://php.net/manual/en/function.exit.php

于 2012-07-05T08:17:39.137 に答える
0

はい。ただし、終了することが重要です。

ページの残りの部分を強制的に表示することができるため、誰かが単にそのファイルからのヘッダー応答を無視することを選択した場合、その出口はその後に他に何もないことを確認します。そうしないと、.php は引き続きページの残りを処理します。後でそこにあるものは何でも出力します。

出口; スクリプトの実行を終了する die() のエイリアスです。

于 2012-07-05T08:07:21.997 に答える