我原则上知道标题重定向失败的常见原因。我的代码在我的旧服务器上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)的内容直接复制粘贴到主文件中时,重定向正确发生。我不明白这一点,数据库连接没有输出任何东西,而其他包含方法似乎没有触发标题失败。