2012-07-11 73 views
0

可能重複:
Headers already sent by PHP無法發送會話cookie - 標題已經發出已

在PHP下面的代碼給出了警告。

<?php 
    if(!isset($_SESSION)) 
    { 
     session_start(); // line 4 
    } 

    if(!isset($_SESSION['valid_admin'])) 
    { 
     header("location:Login.php"); //line 9 
    } 
?> 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 4 

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\wagafashion\Order.php:8) in C:\wamp\www\wagafashion\Lock.php on line 9 

我搜索了Google,發現一個問題here但我至今不明白什麼是有提及。我怎麼解決它?

[我的應用程序與上述代碼工作正常,但前幾天系統與藍屏錯誤墜毀,我不得不重新安裝它,我安裝了不同版本的WAMP。這是什麼問題?]

+0

MOST詢問S.O的PHP問題請先搜索。 – 2012-07-12 00:32:46

回答

2
<?php 
    session_start(); 

    if(!isset($_SESSION['valid_admin'])) 
    { 
     header("location:Login.php"); //line 9 
    } 
?> 

會議決不會被設置在if語句,除非你調用session_start()

如果if語句之前調用session_start()(像你應該做的事)你條件將始終爲真,使if語句無用。

因此,您可以將session_start()放在第一個if語句之上,然後刪除第一個if語句。

+0

謝謝,但我已經嘗試過。它也以相同的警告結束。實際上,我的原始項目中沒有「if(!isset($ _ SESSION))」條件。我剛剛嘗試瞭解它是否有所作爲。 – Tiny 2012-07-11 23:59:26

+0

此代碼必須放在ANY之前才能使用。請將整個文檔包含在OP中,並將我發佈的代碼放在最上面。 – maxhud 2012-07-12 00:01:51

+0

該文件包含問題中提到的唯一代碼。 – Tiny 2012-07-12 00:04:14

1

首先猜測,檢查輸出到瀏覽器的空白輸出是否立即可見。

1

看來你誤解了session_start()功能:

在session_start - 開始新的或現有的恢復會話

有沒有必要檢查是否存在第一。

if(!isset($_SESSION['valid_admin'])){ 
    header("location:Login.php"); //line 9 
} 

注:

自PHP 4.3.3,呼籲在session_start()之後的會議 以前啓動將導致一個E_NOTICE級別的錯誤。另外, 第二節開始將簡單地被忽略。

基於關閉您的警告信息,您有兩個文件:Order.php & Lock.php。哪些文件是您的發佈代碼位於?包含文件可能會由於輸出已存在而導致衝突。

記住,標題()必須被調用之前的任何實際的輸出是 發送,或者通過正常的HTML標記,空行的文件,或者從PHP。 使用include或require, 函數或其他文件訪問函數讀取代碼,並在調用header()之前輸出空格或空行 是非常常見的錯誤。

+0

謝謝,但我已經嘗試過。它也以相同的警告結束。實際上,我的原始項目中沒有「if(!isset($ _ SESSION))」條件。我剛剛嘗試瞭解它是否有所作爲。 – Tiny 2012-07-12 00:04:53

+0

請參閱我的編輯並提供更多詳細信息。 – RobB 2012-07-12 00:05:34

相關問題