2014-02-19 32 views
0

我正在構建一個小型網站,該網站設置一個可能在名稱中包含特殊字符的cookie。在使用setrawcookie()設置Cookie之前,我使用了rawurlencode()。當我檢入瀏覽器開發者工具時,它會顯示cookie正確編碼的字符(例如空格爲%20)。問題是$_COOKIE中的值是urldecoded,因此空格和點被轉換爲下劃線。如何獲取cookie值,因爲它確實發送到服務器?如何檢索cookie的urlencoded名稱

感謝

+0

%20在網址中不是「正確的」編碼。 urlencode()將'space'變成'+'。 'rawurlencode()',但是,會產生一個'%20' –

+0

也許你應該考慮命名你的cookie不同。我沒有看到cookie名稱應該包含空格的原因。雖然這不能解決您的問題,但可能會阻止未來使用第三方軟件等進一步的問題。 – Tokk

+0

Mark,您是對的我正在使用rawurlencode()而不是urlencode()。抱歉。 – Nathan

回答

0

你可以看到通過使用$_SERVER['HTTP_COOKIE']瀏覽器發送的cookie。

+0

雖然這可能會讓你獲得原始價值,但我不認爲這是一個好主意。它是[**不是**文檔](http://www.php.net/manual/en/reserved.variables.server.php),所以它可能不可靠。 –

+0

雖然這確實起作用,我已經玩了一下,它似乎將它們作爲字符串而不是數組返回,那麼我如何從中提取cookie值?正如Amal所說,它沒有記錄,我也看到其他人警告不要使用它,因爲這個原因。 – Nathan

+0

雖然擔心是合法的,但最好的解決方案是以不同的方式命名您的Cookie,而不需要對它們進行編碼等......這種方法十多年來一直沒有問題。要將它們放入數組中,只需在分號處爆炸字符串,然後循環遍歷結果並將等號處的那些爆炸到列表中,等等......您可以使用很多方法來執行此操作。 –