PHP 标头重定向 - 不起作用


PHP header redirect - Not Working

这是代码:

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之外,一切都工作正常,如果我在header之后写一个echo,它将正常工作。另外,如果我打印了location,它将向我显示准确和正确的location

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

有什么帮助吗?

正如 scott 所说,你需要在标头后使用 exit() 或 die()。

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

   <?php

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

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

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

几件事。

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

在标头后添加退出以防止脚本继续前进:

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'];