2012-08-16 21 views
-3

可能重複:
Headers already sent by PHP應該HTML PHP後strated

我的網站運行良好,直到我轉移到了HostGator的服務器,但切換後,我發現每一頁上的錯誤。

Cannot modify header information - headers already sent by (output started at /home/flip/public_html/index.php)

我打開了我的代碼,我讀了一些地方不<?php ?>

我的代碼開始這樣

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<?php 
@session_start(); 
include_once("includes/connection.php"); 
$id=$_SESSION['user_id']; 
    if(!isset($_SESSION['user_id'])) 
    { 
     header("location:index.php"); 
    } 
     if (!isset($_GET["event"])) { 
      $caseVar = "share"; 
     } else { 
      $caseVar = $_GET["event"]; 
     } 
?> 

前豎起HTML和它運行在以前的服務器罰款但是當我切換到新的時候,它開始給每個頁面上的標題錯誤。但後來我把之後的doctype和它開始像以前一樣工作。我真的很想知道爲什麼會發生這種情況。在<?php ?>之前會寫入不可用的html,並且每次我從服務器切換到服務器時都必須更改我的代碼?

+0

爲什麼反對票如果我不知道這就是爲什麼我要求幫助 – 2012-08-16 18:44:31

回答

1

在php頁面頂部調用session_start()之前,不能有任何html。 將關閉PHP的標籤後<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">?>

1

你應該只搜索錯誤,這是一個非常普遍的問題

的事情是:你只能發送標題一次,如果你輸出任何東西,你需要標題。

所以你行

header("location:index.php"); 

不能做任何事情,如果你輸出的東西第一(如空白,或者在你的情況下,這個完整產品線:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

同去的會話:它需要發送標題

2

輸出開始後,您不能調用header()函數如果要在調用之前確保沒有輸出開始,使用輸出緩衝器ob_start(),然後ob_end_flush()來打印輸出並清除緩衝區。

FYI,session_start()header()函數的一種。