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

时间:2019-02-18 12:42:37

标签: php laravel session cookies

我正在laravel 5.7中尝试在我的应用程序中分4步付款

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

这4个步骤包含:

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

现在,请喜欢您的方式

要使用哪个? cookie 会话其他

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

2 个答案:

答案 0 :(得分:0)

要临时存储的数据是根据电子商务的购物车报价数据。您可以将此数据存储在数据库中,其时间戳列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());
        });
    }
  • 具有此优点的是,可用于废弃购物车报告的数据。
  • 在此数据(主要是地址)中,产品将不包含所有详细信息,而是使用外键对各个表进行引用。如果不是这种情况,我建议您对数据库进行规范化。
  • 此外,如果您愿意,可以每周一次删除此数据,以将 删除,假设上周所有过期的条目。

答案 1 :(得分:0)

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

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