2011-08-15 31 views
1

我一直在設置和獲取COOKIES的一些問題。我有一個iframe外的頁面,我設置了一個cookie,然後重定向到facebook,在那裏我得到了COOKIE,之前已經設置並存儲在一個數據庫中。此用戶路徑工作正常,除了用戶可以直接到達Facebook頁面(選項卡),我需要在那裏設置一個cookie,如果沒有設置。php設置/獲取cookie相同的頁面

我知道,在某些瀏覽器中,當設置COOKIE時應該存在一個P3P策略,所以我用: 頭('P3P:CP =「IDC DSP COR ADM DEVI TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'' );它爲IE做了它的工作,但我注意到這個問題不僅與IE有關。

一個可能的問題可能是我設置並嘗試在COOKIE設置後直接在同一頁面上獲取COOKIE而無需刷新頁面? iframe是否影響如何通過PHP設置COOKIES?

有什麼想法?

在此先感謝。

+0

嘗試'$ _COOCIE [ 'somename'] = ...',而不是'setcookie' – k102

+0

因爲他們是你應該小心設置P3P頭可能具有法律約束力,承諾如何處理您的使用數據。通常他們應該鏈接到一個XML P3P文檔,該文檔應該進行合法驗證的斷言。不幸的是,沒有其他方法可以讓IE瀏覽器允許您在iFrame中設置Cookie。如果您未包含P3P標題,則需要使用無Cookie的解決方案。 –

+0

Cookie應該在所有其他瀏覽器中正常工作。而且,只要尚未發送標題,您應該可以檢查cookie並將其設置在同一組PHP代碼中。 –

回答

0

餅乾應該在所有非IE瀏覽器中正常工作。你應該可以檢查一個cookie並將其設置在同一組PHP代碼中,只要你還沒有發送頭文件。服務器將收到一個請求,並且可能會包含您的cookie的頭文件。

您的PHP代碼應該能夠檢查這些cookie,並設置一個加載的標題發送回用戶的瀏覽器。但是,在完成設置標題之前,意外地將一些內容發送回用戶的瀏覽器非常容易,在這種情況下,在那之後設置Cookie將不起作用。例如,如果您將一個關閉的PHP標記?>放在一個文件中,然後在代碼運行時將一個新行或一個空格發送回用戶的瀏覽器,該代碼將返回響應標頭,意思是在那之後他們不能被修改。

雖然您應該會收到「標題已發送」錯誤。

嘗試運行:
http://www.php.net/manual/en/function.headers-sent.php

http://www.tech-recipes.com/rx/1489/solve-php-error-cannot-modify-header-information-headers-already-sent/

+0

我只在設置COOKIES之前設置P3P標題。這會影響設置它們嗎? –

+0

我不這麼認爲(取決於你如何做)。它應該將所有標題集中在一起並將它們與輸出一起發送。嘗試使用livehttpheaders http://livehttpheaders.mozdev.org/ firefox擴展來檢查標題並查看返回的內容。它不應該依賴於瀏覽器。 –

+0

我能想到的另一個原因是,實際上,禁用Cookie的人數實際上比我大... –