PHP标头重定向 - 不工作

时间:2012-05-30 18:06:54

标签: php html

这是代码:

if($rowCheck>0) {
  session_start();

  while($row = mysql_fetch_assoc($check)) {
    $_SESSION['developer'] = $row;          
  }

  header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
}
else
    echo 'Invalid Password or Email!';  

header外,一切正常,如果我在echo之后写header,它将正常工作。此外,如果我打印location,它会向我显示确切的location

我在mamp和macos上运行。所以它在本地主机上。

任何帮助?

4 个答案:

答案 0 :(得分:1)

正如斯科特所说,你需要在标题后面的exit()或die()。

另外,检查在打开和关闭php标记之前或之后没有空格,如下所示:

   <?php

这将导致标头功能失败,因为它被视为输入。还应检查任何相关的包含文件。

答案 1 :(得分:0)

只需评论所有内容并粘贴在正确的开头header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");,然后查看它是否正常工作。如果没有,请检查BOM编码。

答案 2 :(得分:0)

在标题行后添加exit()或die()。头函数不会停止执行脚本的其余部分。

答案 3 :(得分:0)

夫妻俩。

首先,我会在PHP代码中将ini_set("display_errors", 1);放在页面的最顶层。您可能会收到“已发送标头”错误。

在标题后添加一个退出以防止脚本继续下去:

header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
exit;

最后这一点没有意义。

  while($row = mysql_fetch_assoc($check)) {
    $_SESSION['developer'] = $row;          
  }

您正在设置该会话变量一次,因此您不需要while。您还将其设置为等于mysql资源(您可能打算这样做),但也许您只需要一个列

$row = mysql_fetch_assoc($check);
$_SESSION['developer'] = $row['username'];