标头重定向解决方法:标头已发送

时间:2016-07-30 17:57:34

标签: php server http-headers

我原则上知道标题重定向失败的常见原因。我的代码在我的旧服务器上100%完美地工作。没有错误,正确的功能,并在需要时重定向。现在我已经搬到了一台新的服务器上,出现了令人讨厌的小问题。

我有一些初步的PHP代码,包括程序顶部的多个文件,

include_once("include/stuff/usefulstuff.php");

其中一个启动会话(其中一个典型的标题问题)。在此之后,通常会发生标题调用。

现在几乎所有这些都可以转移到标题调用之下,除了一个非常重要的代码。其中一个必需的代码是数据库连接。它是从数据库返回的信息,它确定标头调用是否应该首先发生。

   require_once("databaseconnection.php");
   require_once("include/getuser.php");
   $checkUserID = getuser($user_id, $dbh);

   if ((!isset($_GET['id']))&&($checkUserID!=null)){
       //flush();
       header("Location: ./login.php"); /* Redirect browser */
       $dbh=null;
       exit();
}

除了在标题调用下方放置此必需代码之外的所有内容时,生成的错误消息会抱怨具体说明已经由databaseconnection.php发送了标头。

为什么可能会在这个新服务器上发生这种情况,以及可能最...优雅......修复它的方法(除了将所有代码从databaseconnection.php和getuser.php复制粘贴到主文件)?

编辑:当databaseconnection.php(没有BOM的UTF-8)的内容直接复制粘贴到主文件中时,重定向正确发生。我不明白这一点,数据库连接没有输出任何东西,而其他包含方法似乎没有触发标题失败。

0 个答案:

没有答案