【问题标题】:Storing multiple values in cookies在 cookie 中存储多个值
【发布时间】:2010-11-13 12:13:46
【问题描述】:

我有一个非常大的网站,它使用了大量的 cookie。大约有。有 14 种不同的 cookie。我对每个项目都有不同的 cookie。当用户浏览该网站时,他们的浏览器中将有 14 个 cookie。我不想要这个。

我想要一个包含 14 个项目的网站 cookie,我可以添加、编辑和删除它们。我尝试了很多方法,但我无法做到这一点。

我需要放置一些运行时 cookie 并将用户名保存在 cookie 中。用户登录后,我想在其中保存他们的个人站点地址。最终我想要用户名和个人网站地址。我想在用户访问他的个人站点之前保存用户名,然后我将存储个人站点名称运行时间。

有人知道我该怎么做吗?

【问题讨论】:

    标签: asp.net cookies


    【解决方案1】:

    ASP.NET Cookies Overview 中有一节讨论如何在单个 cookie 中实现多个名称-值对(称为子键)。我想这就是你的意思。

    该页面中的示例,用 C# 编写:

    Response.Cookies["userInfo"]["userName"] = "patrick"; //userInfo is the cookie, userName is the subkey
    Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString(); //now lastVisit is the subkey
    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);
    
    HttpCookie aCookie = new HttpCookie("userInfo");
    aCookie.Values["userName"] = "patrick";
    aCookie.Values["lastVisit"] = DateTime.Now.ToString();
    aCookie.Expires = DateTime.Now.AddDays(1);
    Response.Cookies.Add(aCookie);
    

    编辑:来自 Cookie 概述(已添加重点):

    修改和删除 Cookie: 你 无法直接修改 cookie。 相反,更改 cookie 包括 创建具有新值的新 cookie 然后将 cookie 发送到 浏览器覆盖旧版本 在客户端。

    【讨论】:

    • 因为他们像用户名和个人网站一样同时存储cookie,然后将其添加到cookie中,而在我的情况下,它就像我已经将用户名存储在cookie中,然后我添加了另一个值在像个人网站这样的 cookie 中。有没有办法做到这一点?
    【解决方案2】:

    Matthew 打败了我,但是,是的,请参阅 ASP.NET Cookies Overview...

    要写入和读取具有多个键/值的单个 cookie,它看起来像这样:

    HttpCookie cookie = new HttpCookie("mybigcookie");
    cookie.Values.Add("name", name);
    cookie.Values.Add("address", address);
    
    //get the values out
    string name = Request.Cookies["mybigcookie"]["name"];
    string address = Request.Cookies["mybigcookie"]["address"];
    

    【讨论】:

    • 您仍然在同时存储。名称和地址就像我在 HttpCookie cookie = new HttpCookie("mybigcookie"); 之后所做的那样cookie.Values.Add("name", name);然后当用户使用其个人网站时,我想做 cookie.Values.Add("address", address);有可能吗?
    • javascript 的等效语法是什么?
    • Javascript 等效项:document.cookie="mybigcookie=name=John&address=John's Address"
    • 实际上要从 cookie 中获取值,应该是 string name = Request.Cookies["mybigcookie"]["name"];
    • 删除 cookie 并没有删除 'name' 键,为什么?
    【解决方案3】:

    修改和删除 cookie:您不能直接修改 cookie。相反,更改 cookie 包括创建具有新值的新 cookie,然后将 cookie 发送到浏览器以覆盖客户端上的旧版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2013-08-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多