簡體   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