我怎麼可以設置Cookie在文件的中間,而不會產生「頭已經發出」錯誤?我正在試圖做的是做一個註銷腳本(日誌中的cookie設置工作......這樣奇怪。是不是因爲它是封閉在一個if語句?)但我已經迴應了頁面標題和一些其他的東西在我做出此註銷之前,在頁面的頂部。如何通過PHP在文檔中設置cookie?
謝謝!
我怎麼可以設置Cookie在文件的中間,而不會產生「頭已經發出」錯誤?我正在試圖做的是做一個註銷腳本(日誌中的cookie設置工作......這樣奇怪。是不是因爲它是封閉在一個if語句?)但我已經迴應了頁面標題和一些其他的東西在我做出此註銷之前,在頁面的頂部。如何通過PHP在文檔中設置cookie?
謝謝!
最簡單的方法是使用output buffering直到你準備
<?php
ob_start();
// your code
ob_end_flush();
?>
輸出緩衝存儲所有輸出的數據,直到緩衝區被刷新到將數據發送到客戶端停止PHP,然後把它在所有一次,因此在start
之後的任何回波將保持緩衝直到end_flush
,然後發送
謝謝謝謝你謝謝= D! – Sam 2010-06-10 07:34:06
嘗試分解你的應用程序分爲兩個部分:
首先,取消設置cookie,那麼你的結果頁面上的重定向用戶。這是一種常用的工作方式。
還嘗試使用了一個框架,你的發展,它會提高你的技能和你的代碼的可維護性。
+1用於重構。在* output *中間設置cookie(當然不是文檔的中間)是無稽之談。 – 2010-06-10 07:33:43
我會研究框架:)。 – Sam 2010-06-10 07:34:48
在發送其他任何內容之前發送的標頭中發送Cookie。因此,如果您實際上向客戶端(瀏覽器)「呼應」了某些內容,則您的標題也已發送。
這就是說,你可以緩衝你的輸出,一旦所有的代碼已運行(ob_start()
和ob_end_flush()
)發送所有
誰downvoting的一切,而不發佈評論? – animuson 2010-06-10 07:35:50
*聳聳肩*,我想知道=/ – Sam 2010-06-10 07:37:10
對不起這是一個錯誤。 – 2010-06-10 07:44:18