PHP标头已发送错误

时间:2011-08-30 09:44:21

标签: php

即使在插入ob_start()和ob_flush()之后,以下代码也无效;

我不断收到已发送的PHP标头错误

<?php 
ob_start();
include("/home/www/pheincl/config.php");
include("/home/www/pheincl/common_functions.php");
$num = $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];

if($num == null)
{
  $num = $_SERVER['HTTP_X_MSISDN'];

  if($num == null)
  {
    $num = $_GET["msisdn"];

  }
}

if(strlen($num) > 3)   
{
  $sql="select count(*) from members where msisdn='$num'";
  $r=fetch($sql);

  if($r[0] > 0)
  {
    $r1=fetch("select pin from members where msisdn='$num'");

    if(strlen($r1[pin]) > 2)
    {
      header("Location:http://location1.com?msisdn=$num&pin=$r1[pin]");
    }
  }
  else
  {
    header("Location:http://location2.com&msisdn=$num");
  }   
}
else 
{
  header("Location:location3.com/phe/log.php");
}

ob_end_flush();
?>

更新:经过一些进一步的测试后,看起来这个问题是我的服务员特有的。我认识的人把它放在他们的服务器上并且工作正常

4 个答案:

答案 0 :(得分:4)

使用notepad ++并将编码设置为UTF8而不使用BOM 您的BOM(字节顺序标记)可能是导致它的原因

编辑: 确保对所有包含的文件执行此操作

答案 1 :(得分:1)

在任何标题函数之前,脚本不应该打印任何内容。这意味着没有回声,没有PHP标签之外的HTML代码等。

所以要么sql回应一些错误,要么你的包含文件做类似的事情。

答案 2 :(得分:0)

header代码执行之前,某些内容正在向浏览器发送一些输出。查找输出到屏幕或任何打印或回显语句的任何错误。

答案 3 :(得分:-1)

您可以尝试删除最终版本吗?&gt;避免这个问题。有时这可以解决问题。