无法修改已发送的标题信息标题

时间:2016-04-22 14:17:59

标签: php macos http-headers

我知道这个问题已被多次询问,但我已经看到了很多不同的答案并且已经尝试了所有这些并且没有一个对我有效。因此,让我向您提供我的具体情况,并了解您的建议:

我正在开发Mac OS X El Capitan。我使用的是PHP 5.5.31版。 error message

我在php.ini文件中打开了输出缓冲。我已经痴迷地检查了在发送标题之前没有空格。以下是代码所指的行:

(edit_subject.php:6)

<?php require_once("../includes/session.php");?>
<?php require_once("../includes/db_connection.php");?>
<?php require_once("../includes/functions.php");?>
<?php require_once("../includes/validation_functions.php");?>
<?php find_selected_page();?> 
<?php 
if(!$current_subject){
**redirect_to("manage_content.php")**;
}
?>

(edit_subject.php:38)

$result = mysqli_query($connection, $query);
if ($result && mysqli_affected_rows($connection) >= 0) {
// Success
$_SESSION["message"] = "Subject edited succesfully.";
**redirect_to("Location: manage_content.php");**
} else {
// Failure
$message = "Subject update failed.";
}

(functions.php的:3)

<?php
function redirect_to($new_location) {
redirect_to("Location: . $new_location");
exit;
?>

过去48小时我一直在拔头发。我很欣赏这里的一些指导。
谢谢, 克里斯

2 个答案:

答案 0 :(得分:0)

以下行触发警告(functions.php第3行):

redirect_to("Location: . $new_location");

在输出某些内容后尝试发送标头(考虑到您的语法被破坏,可能是另一个错误/警告)。检查错误日志。

答案 1 :(得分:0)

尝试在重定向之前刷新缓冲区。如果已经输出了一些内容并且您尝试通过重定向在这种情况下更改标题,则会出现问题。

您可以在顶部使用ob_start(),在更改标题之前使用ob_end_flush()进行刷新。

注意:刷新缓冲区只能隐藏问题,而不是解决方案。编码有一些不好的做法,试着想出来。