Laravel - Cookie:初學者的甜蜜介紹

你好,有抱負的開發者們!今天,我們將要深入 Laravel 中的 cookies 甜蜜世界。不,不是指巧克力碎片曲奇(雖然我現在倒不介意來幾個),而是指數位 cookies,它們幫助我們的網頁應用記住重要的信息。

Laravel - Cookie

Cookies 是什麼?

在我們開始編寫代碼之前,讓我們了解一下在網頁開發世界中 cookies 是什麼。Cookies 是網站存儲在用戶電腦上的小數據片段。它們就像小小的數位便利貼,幫助網站記住有關你和你的偏好信息。

想像你在一間咖啡店,咖啡師記住了你的常規訂單。Cookies 對網站的作用就有點像這樣!

在 Laravel 中使用 Cookies 的原因?

Laravel,我們的超級英雄 PHP 框架,使得操作 cookies 變得易如反掌(開玩笑的)。我們使用 cookies 有多種原因:

  1. 記住用戶偏好
  2. 保持用戶登錄狀態
  3. 追蹤用戶行為(當然,在得到他們同意的情況下!)
  4. 存儲臨時數據

現在,讓我們捋起袖子,開始寫代碼吧!

創建 Cookies

在 Laravel 中創建 cookies 是一件非常簡單的事情。我們主要有兩種方法來做到這點:

方法 1:使用 Cookie Facade

use Illuminate\Support\Facades\Cookie;

public function setCookie()
{
Cookie::queue('user_preference', 'dark_mode', 60);
return "Cookie 设置成功!";
}

在這個例子中,我們使用 Cookie Facade 來設置名為 'user_preference' 的 cookie,並將其值設為 'dark_mode'。最後的 '60' 表示這個 cookie 將持續 60 分鐘。

方法 2:使用 cookie() Helper 函數

public function setAnotherCookie()
{
return response("使用 Helper 函数设置 Cookie!")
->cookie('favorite_color', 'blue', 30);
}

在這裡,我們使用 cookie() Helper 函數來設置名為 'favorite_color' 的 cookie,並將其值設為 'blue',持續時間為 30 分鐘。

兩種方法都很棒,所以隨你選擇哪種更舒服。這就像在巧克力碎片曲奇和砂糖曲奇之間選擇一樣 - 它們都很美味!

獲取 Cookies

現在既然我們已經設置了 cookies,我們如何將它們找回來呢?這就像伸手進曲奇罐那樣簡單!

方法 1:使用 Cookie Facade

use Illuminate\Support\Facades\Cookie;

public function getCookie()
{
$value = Cookie::get('user_preference');
return "你的偏好是:" . $value;
}

這種方法使用 Cookie Facade 來獲取我們之前設置的 'user_preference' cookie 的值。

方法 2:使用 Request 物件

use Illuminate\Http\Request;

public function getAnotherCookie(Request $request)
{
$value = $request->cookie('favorite_color');
return "你喜歡的顏色是:" . $value;
}

在這裡,我們使用 Request 物件來獲取 'favorite_color' cookie 的值。

Cookie 方法表

以下是在 Laravel 中最常見的 cookie 方法:

方法 描述
Cookie::queue($name, $value, $minutes) 設置一個 cookie
Cookie::get($name) 獲取 cookie 值
Cookie::has($name) 檢查 cookie 是否存在
Cookie::forget($name) 刪除 cookie
$response->cookie($name, $value, $minutes) 將 cookie 附加到回應
$request->cookie($name) 從請求中獲取 cookie

使用 Cookies 的最佳實踐

  1. 安全性第一:在將敏感數據存儲在 cookies 中之前,總是加密它們。
  2. 輕量化:由於 cookies 會隨著每個請求發送,所以請保持它們的大小。
  3. 設置過期時間:為你的 cookies 永遠設置一個合適的過期時間。
  4. 使用 HTTPS:在可能的情況下,將 'secure' 標誌設為 true,以僅透過 HTTPS 傳輸 cookies。
Cookie::queue('secure_cookie', 'sensitive_data', 60, null, null, true, true);

這將設置一個安全且僅限 HTTP 的 cookie,持續時間為 60 分鐘。

實際範例:主題切換器

讓我們將我們的 cookie 知識應用於一個實際範例。我們將創建一個簡單的主題切換器,記住用戶的偏好:

public function setTheme(Request $request)
{
$theme = $request->input('theme', 'light');
Cookie::queue('theme', $theme, 60 * 24 * 30); // 持續 30 天
return redirect()->back();
}

public function displayPage(Request $request)
{
$theme = $request->cookie('theme', 'light');
return view('page', ['theme' => $theme]);
}

在我們的 Blade 模板中:

<body class="{{ $theme }}">
<!-- 頁面內容在這裡 -->
<a href="{{ route('set.theme', ['theme' => 'light']) }}">亮色主題</a>
<a href="{{ route('set.theme', ['theme' => 'dark']) }}">暗色主題</a>
</body>

這個例子允許用戶在亮色和暗色主題之間切換,並且他們的選擇會被記住 30 天。

結論

恭喜你!你已經開始踏入了 Laravel 中 cookies 的世界。記住,就像真正的 cookies 一樣,數位 cookies 也應該適度使用。始終尊重用戶的隱私並遵循最佳實踐。

熟練來自練習,所以不要害怕在你的 Laravel 專案中嘗試不同的 cookie 實現。在你意識到之前,你將會成為一位曲奇大師...我是說,開發者!

開心編程,願你的 cookies 永遠新鮮,代碼永遠無蟲!

Credits: Image by storyset