1

私はie9を除くすべてのブラウザで完全に機能する以下を使用します

$result = mysql_query("SELECT u_id, from users where (id = '$userID')",$db); 
$item = mysql_fetch_row($result);

$how_many = mysql_num_rows($result);

// if not a user send to reg
if ($how_many < 1){ 
header("Location: /pages/registration");
} 

それは単に転送しません-ヘッダー関数は何もしません-しかし、コードの最後のブロックを以下のものに変更すると、それは機能しますか?!?!

if ($how_many < 1){ 
header("Location: /pages/registration");
// added echo for ie9
echo "<br /><br /><br /><br />here i am ";
} 

私はこれの論理的な理由を理解することはできません、私は何かを逃していますか?

4

2 に答える 2

2

リダイレクト後にこれ以上処理を行う必要がない限り、ヘッダーを送信した後に終了する必要があります。Location

if ($how_many < 1){ 
    header("Location: /pages/registration");
    exit;
} 
于 2012-06-15T16:11:38.123 に答える
1

終了またはエコーすることにより、バッファーはWebブラウザーによってフラッシュされ、IE9はアクションを実行する前に待機します。

以下も機能します。

header('Location: /page');
flush();

不要なコード/リソースが使用されないように、ヘッダー関数が呼び出された後にexit/dieを使用することをお勧めします。

于 2012-06-15T16:21:44.950 に答える