2012-09-12 20 views
0

可能重複:
Headers already sent by PHP頭已經發出,無法找到問題

好了,所以我做了一個具有管理面板的腳本,一切都運作良好。我移動了服務器,現在代碼打破了。我一直在Google上搜索,並且在任何打開/關閉php標籤之前沒有空格,我有ob_start(); & ob_end_flush(); session_start()之前和之後,但我仍然收到錯誤。任何人都可以找到哪裏出了錯?

<?php 
    ob_start(); 
    $host="localhost"; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name=""; // Database name 
    $tbl_name=""; // Table name 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 
    $ref = null; 
    if ($_POST['ref']) 
    { 
$ref = $_POST['ref']; 
    } 
    $myusername=$_POST['username']; 
    $mypassword=$_POST['password']; 
    $myusername = stripslashes(mysql_real_escape_string($myusername)); 
    $mypassword = stripslashes(mysql_real_escape_string($mypassword)); 
    $sql="SELECT * FROM `$tbl_name` WHERE `username`='$myusername' and   `password`='$mypassword'"; 
    $result=mysql_query($sql); 
    $count=mysql_num_rows($result); 
    if($count==1){ 
    $dt2=date("Y-m-d H:i:s"); 
function getip() 
{ 
    $ip = null; 
     if (isset($_SERVER["REMOTE_ADDR"])){$ip = $_SERVER["REMOTE_ADDR"];} 
     else if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){$ip =  $_SERVER["HTTP_X_FORWARDED_FOR"];} 
     else if (isset($_SERVER["HTTP_CLIENT_IP"])){$ip = $_SERVER["HTTP_CLIENT_IP"];} 
    return $ip; 
} 
$myperms = null; 
while ($row = mysql_fetch_array($result)) { 
    $myperms = $row['perms']; 
    } 
    mysql_query("UPDATE admins SET `lastlogin`='".$dt2."',`lastip`='".getip()."', state='1' WHERE username='".$myusername."'"); 
    mysql_query("UPDATE settings SET `lastadmin`='".$myusername."',`lastadminip`='".getip()."'"); 
    session_start(); 
    $_SESSION['username'] = $myusername; 
    $_SESSION['permissions'] = $myperms; 
    if ($ref) 
    { 
    header("location:admin.php?list=".$ref); 
    } 
    else 
    { 
    header("location:admin.php"); 
    } 
    } 
    else { 
    echo "Wrong Username or Password"; 
    } 
    ob_end_flush(); 
    ?> 

我不斷收到2個錯誤(主目錄路徑清零了):

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at admin/checklogin.php:1) in admin/checklogin.php on line 47 

Warning: Cannot modify header information - headers already sent by (output started at admin/checklogin.php:1) in admin/checklogin.php on line 56 

我想不通爲什麼它這個新的服務器上,但不是舊的。谷歌的另一篇文章說「有些主機不喜歡html之前發送頭」但我沒有在這個文件中的任何HTML所以我仍然在虧損。有任何想法嗎?

在此先感謝。

+0

只是要注意,<?php之前的4個空格是爲stackoverflow格式化的,並且不存在於php文件中。 –

+0

您是否檢查過錯誤報告級別與舊服務器相同? –

+0

哦,是的,我想我在開啓壓縮功能時遇到了'ob'問題,您可能也想看看這個 –

回答

4

即使在你的問題,我看到<?php之前的空間。 <?php之前任何被視爲輸出,而你不應該你送header小號

之前如果<?php前4位是不是這樣的事情已經發出 - 查找文件中的BOM字符。

+0

感謝,事實證明,記事本++自動保存爲帶有BOM的UTF-8。必須進入編碼設置才能發現。不勝感激! –

相關問題