使用header()重定向。标头()不起作用(可能是因为数据已发送)

时间:2013-12-16 19:01:38

标签: php redirect header

我正在研究一个不存在的项目。我正在尝试将用户重定向到“请稍候”页面,而其他用户已移动。

在比赛开始时,我给每位球员一封信(我知道这有效)。

$find_user = mysql_query("SELECT `user_id` FROM `games` WHERE `game_id`='".$number_of_games."'");
$find_user = mysql_result($find_user, 0);

if($find_user == $_SESSION["userId"]) {
    $letter = "X";
} else {
    $letter = "O";
}

生成页面的其余部分,并将内容写入页面。

用户移动后,运行以下命令:

header("Location: ../wait".$turn.".php");

这适用于“X”(在数据库上创建游戏的人)并且他们被重定向到“请等待O移动”的页面。

然而,当“O”移动时,它们不会被重定向到现在等待页面。

标题位于代码中的相同位置。

此外,如果这有任何不同......以下代码位于播放器上玩游戏的php文件的底部(要刷新它)。

$url=$_SERVER['REQUEST_URI'];
header("Refresh: 5; URL=$url"); 

我知道结构搞砸了,但它是我的第一个大型PHP项目,我可以提供一些帮助。

为什么重定向为“X”而不是“O”?

更新

如果我输入:

print("<script>top.location.href = '../waitO.php'</script>");

重定向。

如果我输入:

print("<script>top.location.href = '../wait'".$letter."'.php'</script>"); 

它什么都不做。

2 个答案:

答案 0 :(得分:1)

这是因为标题重定向功能仅在您打印HTML内容(或任何内容)之前有效。

如果您收到了信息,则需要使用HTML重定向:

<meta http-equiv="refresh" content="0; url=http://example.com/" />

答案 1 :(得分:1)

您也可以像这样重定向:

print("<script>top.location.href = '...'</script>")