如何在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如何字符串化阵列和存储在cookie的
- 2. 如何在字符串中存储大型二进制数据?
- 3. PHP创建大型JSON字符串
- 4. 使用CoreData存储JSON字符串
- 5. 如何修改大型json字符串?
- 6. 如何将字符串存储在cookie中并检索它
- 7. 如何使用php存储cookie
- 8. 在PHP中动态存储字符串
- 9. Node JS,如何在JSON字符串中正确存储Base64字符串?
- 10. 如何使用动态内存在MIPS中存储字符串?
- 11. 在字符串中存储字符串
- 12. 如何在8086中存储字符串
- 13. 如何查询在bigquery表中存储为字符串的json?
- 14. 如何在字符串中发现号码存储到在PHP
- 15. 如何使用Ruby将日期类型中的字符串存储在MongoDB中?
- 16. 如何使用#在字符串中PHP
- 17. $ .post以json格式使用变量来存储json字符串?
- 18. 如何在GAE数据存储中存储大西萨的xml字符串
- 19. 如何用PHP存储大量数字
- 20. 如何在PHP中将字符串存储为html代码?
- 21. 如何将parse_url作为字符串存储在PHP中?
- 22. 如何将cookie值存储为字符串?
- 23. 使用quercus在php中保存大字符串
- 24. 如何使用c#在varbinary(max)列中存储字符串?
- 25. PHP:如何JSON字符串用引号
- 26. 如何在字符串中使用php查找字符串
- 27. 如何在SQL Server的图像类型列中存储字符串使用SqlParameter
- 28. 如何使用MySQL在Django模型中存储日期字符串?
- 29. 如何在php中使用特殊字符存储文本?
- 30. 我将如何使用php在Mysql中存储一些加密的字符串?
你读过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