我使用以下内容,除了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 ";
}
我无法理解任何合乎逻辑的理由,我错过了什么?
答案 0 :(得分:2)
只要您在重定向后不需要再进行任何处理,在发送Location
标题后,您应该exit:
if ($how_many < 1){
header("Location: /pages/registration");
exit;
}
答案 1 :(得分:1)
通过退出或回显,缓冲区将由Web浏览器刷新,IE9在采取行动之前等待。
以下内容也适用:
header('Location: /page');
flush();
我建议在调用header函数之后使用exit / die来防止使用不必要的代码/资源。