由于某种原因,标头(位置)技巧没有按预期工作

时间:2012-12-17 02:00:53

标签: php html apache

  

可能重复:
  Headers already sent by PHP

环境

  • Apache 2.2.22
  • PHP 5.4.4
  • MAC OSX Lion

声明

我对PHP和整个社区都很陌生,所以我还在学习。

目的

重定向到非常具体的网址。

代码

我已经构建了自己的MVC处理程序,我在下面已经包含了这个处理程序,我正在尝试处理我目前处于user/login的特定情况,但我想在记录后重定向回主页所以我想去home/index。要做到这一点, 我认为 ,正确的重定向方式(经过一段时间的搜索)就是发出以下命令:

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

我已经确认网址是正确的(例如,如果我将网址放在地址栏中就可以了),但由于某种原因,浏览器没有响应。

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

更新

以下是我收到的错误。

  

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

这是第66行:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

从PHP手册:

  

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