0

だから...あなたがそのようなことを述べているスクリプトを持っているなら...

while($result = mysql_fetch_array($resource))
    {
        if($result['TITLE'] == $this->title)
        {
            header("LOCATION: profile.php?error=11");
        }
        echo 'testing';
    }

    //Create the database profile
    $second_query = "INSERT INTO profiles(USER_ID, KEYWORDS, TITLE, INTRO) ";
    $second_query .= "VALUES(".$this->userId.",'".serialize($this->keywords)."','".$this->title."','".$this->intro."')";
    echo $second_query;
    if($result = mysql_query($second_query))
    {
        if(isset($file))
        {
            $this->update_profile($this->files);    
        }
        return true;    
    }else
    {
        return false;   
    }

最初の条件は失敗し、ヘッダーを送り返します...ヘッダーを送信した後にfalseを返さない場合、スクリプトの実行を続行しますか?データベースでタイトルが見つかった場合にエラーが返されるという問題がありましたが、そのスクリプトは引き続き実行されるため、データベースに重複するタイトルエントリが挿入されます。

繰り返しますが...ヘッダーを送信した後もスクリプトは実行を続けますか?別名(この場合)リダイレクト?

4

2 に答える 2

3

locationヘッダーがyesなしで送信された場合、exitスクリプトの実行を続行します。

有効:

header("Location: profile.php?error=11");
die(); // or exit();

headerこれはPHP自体によって実行されるのではなく、ブラウザーによって実行されると考えてください。これを適用するheader("Content-Type: application/force-download");と、次の出力ブロックをダウンロードする必要があることがブラウザーに通知されます。

したがって、ヘッダーを別の場所に設定した場合でも、スクリプト内のすべてのコードは、終了しない限り、によって処理されPHP、ブラウザーがその場所を取得してリダイレクトします。

于 2012-09-11T19:18:31.667 に答える
0

はい、そうなりますので、ヘッダーを送信した後にスクリプトを終了してください

header("Location: profile.php?error=11"); 
exit;
于 2012-09-11T19:21:25.510 に答える