如何在cookie中存儲大型JSON字符串?我只能使用cookie,在我的情況下,會話不是一個選項。任何人都可以發佈示例代碼來壓縮字符串並存儲在cookie中,並且還可以成功檢索。謝謝。如何使用PHP在cookie中存儲大型JSON字符串
回答
壓縮數據似乎不是一個好主意。相反,我會將它保存在數據庫中,並且只將數據庫條目的ID存儲在cookie中。這也會阻止人們篡改數據,儘管篡改ID仍然是可能的。使用會話會更好,並消除這一點。
但是,如果你堅持要存儲在cookie中的數據,你可以使用既gzcompress()
,gzdeflate()
或gzencode()
壓縮數據。這些都提供壓縮。 gzdeflate()
將是您的問題的最佳選擇,因爲它是最節省空間的。
$compressedJSON = gzdeflate($json, 9);
setcookie('json', $compressedJSON);
,並讀取它
$compressedJSON = $_COOKIE['json'];
$json = gzinflate($compressedJSON);
請記住,即使壓縮將足以爲您的數據留在4K範圍內,你可能最終超過,應JSON量您需要存儲的數據會增加。
我仍然建議您使用數據庫來代替。
請注意,要使用gz *函數,必須啓用zlib擴展,默認情況下不是(在非Windows計算機上)。 – 2012-03-27 12:04:11
將這些數據存儲在數據庫中是最好的建議,thnx。 – Dev 2012-03-27 12:27:49
是這樣的嗎?
編碼
$sJSON = json_encode($sSomeJSONData);
setcookie('json', $sJSON);
解碼
$sJSON = json_decode($_COOKIE['json']);
---編輯----
圍棋與克里斯蒂安的答案使用gzip或數據庫是最有意義?但是如果你不能使用數據庫,你可以手動建立會話。
從技術上講,所有會話都是存儲在包含數據的Web樹之外的文本文件。您可以使用類似uniqid()
的東西來複制該進程以生成「會話名稱」。
使用該「會話名稱」作爲文件名在給定的目錄中創建一個文本文件,並將「會話名稱」存儲在您的Cookie中。
然後只需使用serialize()
,unserialize()
和file_put_contents()
,file_get_contents()
你的程序和文本文件之間傳輸數據,使用cookie中的數據查找的文本文件。
這需要一些健康檢查和劫持預防,但原則是健全的。
如果您的信息很大,您可能需要考慮使用本地存儲。並非所有的瀏覽器都支持本地存儲,但所有的瀏覽器都可以。如果您的cookie太大,您可能會收到431 http錯誤。
因此,您沒有尺寸問題,並且不必爲每個請求都傳遞一個大的Cookie,您應該只在cookie中存儲一個唯一的ID。然後,您可以使用唯一標識從memcache,mysql或任何其他服務器端存儲中檢索大數據對象。不需要任何會話。
你能告訴我我們可以儲存多大的苦力嗎......我們可以像500字一樣儲存餅乾嗎? – StaticVariable 2012-08-21 03:05:09
Cookie可以達到4K。這是整個cookie(元數據+數據)。如果您在任何地方靠近,並且需要在本地存儲項目,則應使用本地存儲。所有現代瀏覽器都支持它。 – 2012-08-27 15:04:47
- 1. 如何在PHP中使用PHP存儲原始json字符串?
- 2. 大型JSON字符串中使用JAVA
- 3. PHP如何字符串化陣列和存儲在cookie的
- 4. 如何在字符串中存儲大型二進制數據?
- 5. 如何在cookie中保存字符串?
- 6. PHP創建大型JSON字符串
- 7. 使用CoreData存儲JSON字符串
- 8. 存儲整個JSON字符串在MySQL數據庫使用PHP
- 9. 如何修改大型json字符串?
- 10. 如何將字符串存儲在cookie中並檢索它
- 11. 將大型json字符串存儲到數據庫+散列表
- 12. 如何使用Cookie在GWT中存儲字符串數組列表?
- 13. 如何在php中使用特殊字符存儲和檢索字符串?
- 14. 如何使用php存儲cookie
- 15. 如何在C字符串中存儲巨大的數字?
- 16. 在PHP中動態存儲字符串
- 17. Node JS,如何在JSON字符串中正確存儲Base64字符串?
- 18. 如何使用動態內存在MIPS中存儲字符串?
- 19. 如何在.NET中的內存中存儲字符串和字符類型?
- 20. 在字符串中存儲字符串
- 21. 如何在8086中存儲字符串
- 22. 如何在mysql表中存儲json字符串
- 23. 如何查詢在bigquery表中存儲爲字符串的json?
- 24. cookie商店json字符串
- 25. 如何在字符串中發現號碼存儲到在PHP
- 26. 如何在字符串標籤中存儲字符串
- 27. 如何在我的域類中存儲巨大的字符串?
- 28. 如何使用Ruby將日期類型中的字符串存儲在MongoDB中?
- 29. sqlite中的字符串存儲大小
- 30. 如何使用#在字符串中PHP
你讀過http://php.net/manual/en/features.cookies.php了嗎? – Jon 2012-03-27 11:30:16
是的,我讀過。 – Dev 2012-03-27 11:32:00
看看http://stackoverflow.com/questions/4225030/jquery-save-json-data-object-in-cookie – NAVEED 2012-03-27 11:32:39