【问题标题】:PHP - Create multiple cookie filesPHP - 创建多个 cookie 文件
【发布时间】:2011-05-23 17:52:40
【问题描述】:

我了解到每个域可以有 20 个 cookie,每个文件 4kb。

我目前正在设置这样的 cookie:

setcookie($cookieName, $cookieData , time()+60*60*24*30, "/");

如果名称为“One”且数据为“111111111”...然后我使用数据“222222222”设置另一个 cookie“Two”...然后我有一个包含以下数据的文件

One
111111111
192.168.1.2/
1536
673206400
30159100
1505317760
30153065
*
Two
2222222222
192.168.1.2/
1536
983206400
30159100
1820257760
30153065
*

如何创建两个不同的文件?我想通过我们的 Intranet 站点的 cookie 最多只能有 4kb 的限制。所有这些 cookie 文件都来自同一个站点...

【问题讨论】:

  • 很难遵循您的目标,请详细说明您的问题,以便我们为您提供帮助。
  • 这将是非常骇人听闻的,但您可以使用或多或少特定的子域来获取更多 cookie(即同时使用 *.domain.com 和 www.domain.com)。我也无法保证会奏效。
  • 另外,我觉得最重要的是要说的是强制性的“don't do it”答案——坚持大量数据,你就不会遇到这个问题。这不是 cookie 的用途。

标签: php cookies dns setcookie


【解决方案1】:

您通常不想为此使用 cookie,而是启动 session(使用 cookie 来识别用户),并将信息存储在服务器端。

或者,如果会话生命周期对于您的目的而言太短,请创建一个生命周期较长的 cookie,并在其中存储一个随机密钥。使用该密钥在服务器端存储和查找您的数据。

如果您必须在本地存储内容,则有更成熟的客户端存储策略可以接受比这更多的数据。见

【讨论】:

  • 这样做的原因是,当有人在页面上选择特定标准时,我们希望在几天内维护这些选择......不幸的是,将数据存储在数据库中不是我......关闭浏览器后会话不会持续存在。不过,似乎本地存储可能是一种可能性;我会稍微回顾一下。
  • @adam 您可以延长会话生命周期,或者使用相同的机制但不使用会话:创建唯一 ID,将其存储在 cookie 中,使用该 ID 存储服务器端的内容(在数据库中或文件),如果浏览器发送带有 ID 的 cookie,则查找数据。
  • @adam 只是为了让您知道会话与浏览器无关,而与 cookie 无关。会话是服务器上基于密钥的存储。浏览器中设置为在关闭时过期的 cookie 维护正确会话的密钥。因此,理论上可以通过将会话密钥 cookie 存储在不同的、寿命更长的 cookie 中,然后将其移回原位来保留会话。
  • 哇....这是个好主意。我很可能会采纳这个想法。我刚刚得到消息,如果绝对必要,数据库存储可能是一种替代选择。感谢 Renesis 和 Pekka 的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多