php标头不转发ie9

时间:2012-06-15 16:05:01

标签: php

我使用以下内容,除了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 ";
} 

我无法理解任何合乎逻辑的理由,我错过了什么?

2 个答案:

答案 0 :(得分:2)

只要您在重定向后不需要再进行任何处理,在发送Location标题后,您应该exit

if ($how_many < 1){ 
    header("Location: /pages/registration");
    exit;
} 

答案 1 :(得分:1)

通过退出或回显,缓冲区将由Web浏览器刷新,IE9在采取行动之前等待。

以下内容也适用:

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

我建议在调用header函数之后使用exit / die来防止使用不必要的代码/资源。