我正在構建一個小型網站,該網站設置一個可能在名稱中包含特殊字符的cookie。在使用setrawcookie()
設置Cookie之前,我使用了rawurlencode()
。當我檢入瀏覽器開發者工具時,它會顯示cookie正確編碼的字符(例如空格爲%20)。問題是$_COOKIE
中的值是urldecoded,因此空格和點被轉換爲下劃線。如何獲取cookie值,因爲它確實發送到服務器?如何檢索cookie的urlencoded名稱
感謝
我正在構建一個小型網站,該網站設置一個可能在名稱中包含特殊字符的cookie。在使用setrawcookie()
設置Cookie之前,我使用了rawurlencode()
。當我檢入瀏覽器開發者工具時,它會顯示cookie正確編碼的字符(例如空格爲%20)。問題是$_COOKIE
中的值是urldecoded,因此空格和點被轉換爲下劃線。如何獲取cookie值,因爲它確實發送到服務器?如何檢索cookie的urlencoded名稱
感謝
你可以看到通過使用$_SERVER['HTTP_COOKIE']
瀏覽器發送的cookie。
雖然這可能會讓你獲得原始價值,但我不認爲這是一個好主意。它是[**不是**文檔](http://www.php.net/manual/en/reserved.variables.server.php),所以它可能不可靠。 –
雖然這確實起作用,我已經玩了一下,它似乎將它們作爲字符串而不是數組返回,那麼我如何從中提取cookie值?正如Amal所說,它沒有記錄,我也看到其他人警告不要使用它,因爲這個原因。 – Nathan
雖然擔心是合法的,但最好的解決方案是以不同的方式命名您的Cookie,而不需要對它們進行編碼等......這種方法十多年來一直沒有問題。要將它們放入數組中,只需在分號處爆炸字符串,然後循環遍歷結果並將等號處的那些爆炸到列表中,等等......您可以使用很多方法來執行此操作。 –
%20在網址中不是「正確的」編碼。 urlencode()將'space'變成'+'。 'rawurlencode()',但是,會產生一個'%20' –
也許你應該考慮命名你的cookie不同。我沒有看到cookie名稱應該包含空格的原因。雖然這不能解決您的問題,但可能會阻止未來使用第三方軟件等進一步的問題。 – Tokk
Mark,您是對的我正在使用rawurlencode()而不是urlencode()。抱歉。 – Nathan