2013-12-16 157 views
0

我已經完成了一個只能在登錄後才能訪問的頁面。現在我已經完成了一個註銷按鈕,該按鈕可以正常工作,但是在註銷錯誤消息後我得到了該按鈕。兩秒後的重定向工作,會議結束,但我仍然得到以下錯誤:結束會話後出錯

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u200098000/public_html/logout.php:2) in /home/u200098000/public_html/logout.php on line 3

這是我的代碼:

<?php 
session_start(); 
session_destroy(); 


echo "<h1>You succesfully logged out</h1>"; 
echo '<p> If you are not redirected automatically please click <a href="index.html">here</p>'; 

echo '<script>'; 

echo 'redirectTime = "2000";'; 
echo 'redirectURL = "/index.html";'; 
echo 'setTimeout("window.location = redirectURL",redirectTime);'; 

echo '</script>'; 


?> 

非常感謝任何幫助。

+2

在代碼的開始處刪除**空白**,也包括在任何文件的開頭。 – Leonardo

+0

http://stackoverflow.com/questions/8812754/cannot-send-session-cache-limiter-headers-already-sent接受的答案是關於在開始會話之前不向瀏覽器發送任何東西。 (如迴應一些東西) –

回答

1

Headers already sent一般表示在會話開始之前發生了某種輸出。檢查是否有任何類型的空白文件,並確保在致電session_start()之前沒有執行任何printecho等命令。即使在包含文件的開始或結尾處出現空白,也可能導致此情況發生。一個讓我在很多衛星之前咬住我的地方是在收尾的?> PHP標籤之後的一個包含文件底部的一條空行。

+0

完全正確,我將與您在<?php第一行之前的那些空格一起使用,那些是您的代碼? –

0

要使用基於cookie的會話,必須在向瀏覽器輸出任何內容之前調用session_start()

確保在這些行之前沒有任何內容輸出到瀏覽器,並從代碼中刪除任何令人不快的空白。該錯誤意味着你向瀏覽器輸出了一些東西

+0

看起來OP在'<?php'標記之後使用它。 OP需要做的是確保在會話呼叫之前沒有輸出。 'session_start()'可以被調用1000行,如果需要的話,輸出開始後就不可以。 – Crackertastic