微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP – 无法修改标题信息

参见英文答案 > How to fix “Headers already sent” error in PHP                                    11个
我对这个错误感到很疯狂:无法修改标题信息 – 已经由…发送的标题

请注意,我知道google和堆栈溢出的大量结果.我的问题是我构建页面的方式.为了使html与PHP分开,我使用包含文件.所以,例如,我的页面看起来像这样:

<?PHP 
require_once('web.config.PHP'); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
<link rel="shortcut icon" href="images/favicon.gif"/>
<link rel="shortcut icon" href="images/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="<?PHP echo SITE_STYLE; ?>"/>
</head>
<body>
<div id="page_effect" style="display:none;">
<?PHP require_once('./controls/login/login.control.PHP'); ?>
</div>
</body>
</html>

因此,当我的PHP文件被包含时,标题已经发送.

部分包含文件如下所示:

// redirect to destination
if($user_redirect != 'default')
{
    header('Location:'.$user_redirect);
}
elseif($user_redirect == 'default' && isset($_GET['ReturnURL']))
{
    $destination_url = $_GET['ReturnURL'];
    header('Location:'.$destination_url);
}
else
{
    header('Location:'.SITE_URL.'login.PHP');
}

但我无法弄清楚如何解决这个问题.我不能在输出之前重定向头,因此输出缓冲是我唯一能做的事情.当然,它的工作方式很好 – 但不得不依赖它只是臭.

如果PHP有另一种重定向方式或者有其他参数来告诉它清除缓冲区,那将是很好的.

解决方法:

关键不是将PHP与HTML分开,而是将Presentation与Processing分开.基于应用程序状态的重定向是处理的一部分.先这样做.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐