【问题标题】:Replacing Session with Cookie用 Cookie 替换会话
【发布时间】:2012-01-20 23:46:30
【问题描述】:

最近我实现了一个需要修复的购物车。

购物车对象存储在$_SESSION['cart'] 中。现在浏览器关闭时出现问题,购物车丢失,因为关闭浏览器后会话不再保持活动状态。

解决此问题的方法是将购物车对象存储在具有更长生命周期的 cookie 中,而不是会话中。

我的问题是,如果您知道快速修复,还是我真的必须检查所有源文件并用 cookie 替换会话?

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    会话通常由 cookie 标识,默认情况下,cookie 在浏览器关闭后被删除。因此,如果您需要使会话持续很长时间(或永远),您应该调整 PHP 引擎的参数session.cookie-lifetime。 这里是the docs on that

    【讨论】:

    • 据我了解,session.cookie-lifetime 无法将会话生命周期延长到浏览器的生命周期之外。
    • 文档说:值 0 表示“直到浏览器关闭”。默认为 0。 但它可以大于 0。您可以在一年中放置几秒钟,非活动会话将持续一年。
    • 可能还需要调整会话的 GC 最大时间 - 否则会话数据在 cookie 过期之前被垃圾收集的可能性非常非常小。
    【解决方案2】:

    我认为您将不得不进行所有编辑。幸运的是,有一个名为 Regexxer 的便捷搜索和替换工具(适用于 Linux),它提供了一个图形界面,用于在多个文件中进行搜索和替换。

    【讨论】:

      【解决方案3】:

      我不确定您是否能够在不使用 serialize() 以及 base64_encode() 和 base64_decode 的情况下将此类数据存储在 cookie 中。事先要记住一些事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 2014-09-02
        • 2010-10-21
        • 2011-09-09
        相关资源
        最近更新 更多