【问题标题】:Cannot modify header information (connot detect header)无法修改标头信息(无法检测标头)
【发布时间】:2015-02-21 11:50:49
【问题描述】:

我检查了不同页面中的所有答案并使用它,但错误仍然出现。请帮帮我。

错误是:

Warning: Cannot modify header information - headers already sent by (output started at /home/iraustor/public_html/copytest/post.php:1) in /home/iraustor/public_html/copytest/post.php on line 57

表单的网址在这里:http://iraust.org/copytest/contact.html

完成表格后的页面是:http://www.iraust.org/copytest/thanks.html(或任何其他隐藏此消息的方法)

花了 2 天的时间,但得到了答复。请帮帮我。

"header("Location:$Redirect_Page");"

【问题讨论】:

  • 确保在 php 开始和结束标记之外没有空格。 虽然 <?php 开始标记之前的空行在 PHP 处理时可能看起来很无辜,它会变成一个回显语句,打印出一个空行。这是一个常见的罪魁祸首。
  • 另外,您不希望在关闭 php 标签后出现空行 (?>)。更好的办法是简单地离开那些结束标签。它们只会引起问题,跳过它们是安全的。
  • 检查过了。标签前没有空格,尤其是第一个
  • 错误表明输出是在post.php (post.php:1) 的1 行开始的......如果在打开<?php 之前没有任何内容,则检查文件没有 BOM 表头

标签: php redirect header location contact


【解决方案1】:

如果您发出headers,就像您为重定向所做的那样(设置Location),您必须确保在该语句之前没有其他输出,因为PHP 已经构建了标头(但是可能还没有将它们刷新到客户端)在第一个输出上。

这种情况可能有几个原因(某些require 中的意外错误、某些文件开头或结尾处的空格等,但在提及此输出开始的位置时您收到的错误消息很清楚:@987654324 @。

您应该仔细检查在打开之前和关闭 <?php ... ?> 块之后没有任何内容。这适用于被调用脚本中的所有included 或required 文件。

【讨论】:

  • 事实上,完全消除任何尾随 ?> 有助于防止发送“不可见”输出,例如,如果脚本末尾有任何换行符
  • 我查过了。任何页面中都没有空格:(
【解决方案2】:

正如 h7r 所指出的,如果你使用 header 函数,你不能在它调用之前打印任何东西。

请记住,header() 必须在发送任何实际输出之前调用,无论是通过普通 HTML 标记、文件中的空白行,还是通过 PHP。

From Header documentation on PHP.net

所以,您首先应该检查 post.php 文件中的第 57 行:从那里开始导致错误的输出。

确保不发送任何输出:空格或空行也是输出,这会导致错误。

如果您愿意,您可以使用output control functions 来缓冲输出:这样您可以打印您想要的内容,但您的所有输出不会立即发送到浏览器,因此您可以使用标头功能而不会导致错误.

【讨论】:

    【解决方案3】:

    把你的代码放在某个地方供我们查看...

    可能 PHP 可能会输出错误或警告等...例如,可能不是您。

    【讨论】:

      【解决方案4】:

      前面没有空格 我完全糊涂了! 表格正在工作,信息将发送到电子邮件 但是这个错误让用户感到紧张

      【讨论】:

        【解决方案5】:

        简单代码编辑器(notpad++)解决的问题 问题:隐藏的空格和非 Unicode 字符

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-03
          • 2021-11-15
          • 2017-10-30
          • 1970-01-01
          • 1970-01-01
          • 2011-08-03
          • 2014-03-07
          • 2013-07-09
          相关资源
          最近更新 更多