PHP标头已发送错误
即使插入了ob_start()和ob_flush(),以下代码仍不起作用 我一直得到PHP头已经发送错误PHP标头已发送错误,php,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
<?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();
?>
在执行头之前,有东西正在向浏览器发送一些输出。查找输出到屏幕的任何错误或任何打印或回显语句。在任何头函数之前,脚本不应打印任何内容。这意味着没有回声,没有php标记以外的html代码等
因此,要么sql回显某些错误,要么您的包含文件执行类似操作。使用记事本++并将编码设置为UTF8,而不使用BOM表
您的BOM(字节顺序标记)可能是导致它的原因
编辑:
确保对所有包含的文件执行此操作您可以尝试删除最终?>以避免出现问题。有时这会解决问题。包含的文件是否会回显任何内容?@Lee这应该无关紧要,因为在包含有机会回显数据之前就启动了输出缓冲。在最后的else部分中,不要忘记location3前面的“http://”。com@ghostJago就在那里,,我在编辑实际URL时犯了一个错误,您的问题中缺少具体的错误消息。它将给出开始输出的文件和行号。删除这些行,直到错误消失。那么您可能已经找到了导致此问题的原因。您在所有文件上都这样做了吗?包含的文件我是说谢谢,其中一个包含的文件有问题