重定向Header()替代方案

时间:2012-08-22 21:37:29

标签: php header

  

可能重复:
  Headers already sent by PHP

我有一个显示下拉菜单的php网页

下拉菜单提供指向后端脚本的链接,后端脚本将运行查询并设置一些会话变量。然后使用

重定向到结果页面
header('Location: search_results.php');

重定向死亡,“无法修改标题信息 - 标题已发送”

试图找到解决这个问题的方法。 “修改标头”错误是一个错误,它始终是当前正在运行的PHP脚本的本地错误?或者它是整个会议?

感谢, JM

4 个答案:

答案 0 :(得分:3)

确保您没有在该行之前输出任何内容(例如空格或其他输出)。

一种简单的方法是打开输出缓冲区:

ob_start();

在适当的时候明确说明:

ob_end_clear();  // erases output buffer
// or 
ob_end_flush();  // sends output buffer to screen

但是,正确的解决方案是检查代码并确保没有错误的输出语句。

答案 1 :(得分:1)

在不查看代码的情况下,我会猜测您在header PHP代码之前有HTML。标题需要在HTML之前解析。

答案 2 :(得分:0)

您可以通过在PHP脚本开头发出ob_start()来尝试使用输出缓冲。

此错误的常见原因是在起始<?php标记之前有空格(或有时是BOM);标头检查是本地的,它不是会话范围的。另一方面, 受其他包含的PHP文件的影响,所以你也必须检查它们。

答案 3 :(得分:-1)

您可以使用元重定向

<meta http-equiv="refresh" content="2;url=http://google.com/">

以上将在2秒内刷新页面http://google.com/ 然后javascript重定向

<script type='text/javascript'>
document.location.href='http://google.com';
</script>