【问题标题】:Using $_SESSION to store shopping cart info will be lost after browser close使用 $_SESSION 存储购物车信息会在浏览器关闭后丢失
【发布时间】:2012-09-05 10:18:43
【问题描述】:

在阅读了此处的许多问题/解决方案后,我处于无法真正解决的情况。基本上我正在编写一个小型购物车应用程序。我正在寻找一种方法来存储用户添加到购物车的商品,最终我使用了 $_SESSION。

问题是所有保存的购物车数据在关闭浏览器后都会丢失。我不能依赖 $_COOKIE,因为我需要将每个“添加”作为新数组存储到购物车,而且我找不到使用 cookie 的方法(加上它有限制或其他什么),我真的对现在该怎么办感到困惑。

我什至会为客人保存购物车数据,而使用数据库对我来说不是一个选项。有什么建议吗?

【问题讨论】:

  • 可能是因为您的浏览器正在丢失会话 cookie?

标签: php session cookies


【解决方案1】:

为什么不将购物车存储在数据库中。在用户 cookie 中保存一个唯一 ID(或者如果您有身份验证/登录系统,只需使用用户 ID)。将其存储在数据库中还可以让您看到不完整的订单,这可能对统计数据和重新定位营销等有用。

【讨论】:

    【解决方案2】:

    我认为关闭浏览器时购物车物品丢失是标准做法。

    您可以尝试使用 HTML5 本地存储:-

    Local storage tutorial

    【讨论】:

      【解决方案3】:

      您的会话 cookie 需要 set a lifetime,默认情况下它只存在于浏览器关闭之前。

      【讨论】:

        【解决方案4】:

        正如你提到的,当浏览器关闭时会话不会持续。

        如果数据库或任何类型的服务器端存储不是一个选项。您可以考虑使用 LocalStorage 将其保存在客户端。即使浏览器关闭,本地存储中的数据也会保留。浏览器将域名与您的数据相关联。

        使用本地存储时需要注意的几点。

        首先,本地存储在客户端,因此您可能需要将数据传回服务器,以便 PHP 可以对其进行操作。 (假设您仍然需要服务器端来处理购物车数据。)请参阅此 stackoverflow 帖子:PHP & localStorage;

        其次,用户可以无限制地更改本地存储。

        第三,直到 IE8 才被 IE 支持。如果您担心 IE6/7,您可能需要回退到 cookie 方法。

        【讨论】:

          【解决方案5】:

          浏览器关闭时会话会被​​清除,因此您必须使用 cookie。

          看看这篇文章,了解如何在 cookie 中存储数组:update cookie value in php

          Troelskn 的方法是我会使用的方法,但是,将购物车 ID 存储在数据库中似乎是明智之举:)。

          【讨论】:

            猜你喜欢
            • 2012-09-16
            • 1970-01-01
            • 1970-01-01
            • 2011-04-11
            • 2020-11-04
            • 2013-05-09
            • 2012-07-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多