2011-08-30 58 views
-3

即使在插入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(); 
?> 

更新PHP頭:經過進一步測試它看起來像這樣的問題是具體到我施維雅。我知道的人把它放在他們的服務器上,它運行得很好

+0

包含的文件是否會迴應任何內容? –

+1

@Lee它應該無關緊要,因爲輸出緩衝在包含有機會回顯數據之前開始。 –

+1

在你最後的其他部分,不要忘記location3.com前面的「http://」 – ghostJago

回答

0

某些東西在您的header代碼執行之前發送一些輸出到瀏覽器。查找輸出到屏幕的任何錯誤或任何打印或回顯語句。

+0

謝謝,這是一個包含文件之一的問題 –

1

在任何標頭函數之前,腳本不應該打印任何東西。這意味着沒有回聲,php標籤之外沒有html代碼等。

因此,要麼sql回聲一些錯誤,或者你的包含文件做類似的事情。

4

使用記事本+ +,並設置編碼UTF8無BOM 您的BOM(字節順序標記)可能是什麼原因引起的

編輯: 確保你做它包含的所有文件

+0

試過,對於所有文件,你是否都這樣做了? –

+0

?包括我的意思是文件 – galchen

-1

你可以嘗試刪除最後?>以避免該問題。有時這可以解決問題。