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

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

以下也将起作用:

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

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

于 2012-06-15T16:21:44.950 回答