0

可能重复:
PHP 已发送的标头

环境

  • 阿帕奇 2.2.22
  • PHP 5.4.4
  • MAC OSX 狮子

免责声明

我对 PHP 和整个社区都很陌生,所以我仍在学习我的方式。

客观的

重定向到一个非常具体的 URL。

代码

我已经构建了自己的 MVC 处理程序,我已将其包含在下面,并且我正在尝试处理我目前所处的特定情况,user/login但我想在登录后重定向回主页,所以我想转到home/index. 为此,我认为,正确的重定向方法(经过大量搜索后)是发出以下命令:

header("Location: http://$host$uri/$controllerName/$action");

我已经验证了 URL 是正确的(例如,如果我将 URL 放在地址栏中它会起作用),但由于某种原因浏览器没有响应。

有人可以指出我正确的方向吗?

更新

以下是我收到的错误。

警告:无法修改标头信息 - 标头已由第 70 行 /Applications/MAMP/htdocs/test/core/bootstrap.php 中的(输出开始于 /Applications/MAMP/htdocs/test/core/bootstrap.php:66)发送

这是第 66 行:

if ($_SERVER['DEBUG']) { echo "<br/>$url ..."; }

所以,在尝试它出现之前我无法输出任何东西?

4

1 回答 1

2

您只能在任何输出开始之前修改标题信息。尝试将标题更改放在脚本的顶部,它将起作用(假设已设置这些变量)。

在第 66 行,您可能有一个echo命令或一些 HTML。

来自 PHP 手册:

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

于 2012-12-17T02:06:21.543 回答