繁体   English   中英

使用 Cookie 或 Session 哪个? laravel 5.7 - 存储数据 5 分钟

[英]which to use Cookie or Session? laravel 5.7 - to store data for 5 minutes

伙计们,我正在尝试在 laravel 5.7 的应用程序中进行 4 步付款

然后我想将这些数据存储在 4 个步骤中,直到付款完成,然后我想将它们存储在数据库中

这 4 个步骤包含:

  1. 选择产品
  2. 选择配件
  3. 输入地址
  4. 输入付款明细

现在请更喜欢你的方式

使用哪个? cookie会话其他什么

我会使用会话,但我希望这些数据在 5 分钟后销毁,如果我选择会话生存期为 5 分钟,所有会话数据都将像我的登录会话一样销毁,我只想销毁我创建的会话。

您要临时存储的数据是电子商务方面的购物车报价数据。 您可以将此数据存储在数据库中,时间戳列expires_at值为current time + 5 minutes

然后在您的模型全局范围内,它将始终过滤查询并仅获取未过期的数据:

/**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('expires_at', function (Builder $builder) {
            $builder->where('expires_at', '<=', Carbon::now());
        });
    }
  • 这样做的好处是,您可以将数据用于废弃购物车报告。
  • 在此数据中,主要是地址,产品将不包含所有详细信息,而是使用外键对相应表的引用。 如果不是这种情况,我建议您规范化您的数据库。
  • 此外,如果您愿意,您可以在每周的 cron 中删除此数据,以删除上周所有过期的条目。

会话提供了一种跨多个请求存储用户信息的方法,您应该检查https://laravel.com/docs/5.7/session对我来说是最好的选择。在会话驱动程序配置选项中,您可以定义会话数据的位置为每个请求存储,例如cookie ,如果会话存储在安全的加密 cookie 中。 然后,对于有关销毁数据的问题,您可以使用忘记方法将从会话中删除一段数据。 如果您想从会话中删除所有数据,您可以使用flush 方法。

// Forget a single key...
  $request->session()->forget('key');
//or
  $request->session()->flush();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM