
- Symfony 教程
- Symfony - 首頁
- Symfony - 簡介
- Symfony - 安裝
- Symfony - 架構
- Symfony - 元件
- Symfony - 服務容器
- Symfony - 事件與事件監聽器
- Symfony - 表示式
- Symfony - Bundles
- 建立簡單的 Web 應用
- Symfony - 控制器
- Symfony - 路由
- Symfony - 檢視引擎
- Symfony - Doctrine ORM
- Symfony - 表單
- Symfony - 驗證
- Symfony - 檔案上傳
- Symfony - Ajax 控制
- Cookie & Session 管理
- Symfony - 國際化
- Symfony - 日誌記錄
- Symfony - 郵件管理
- Symfony - 單元測試
- Symfony - 高階概念
- Symfony - REST 版本
- Symfony - CMF 版本
- 完整的執行示例
- Symfony 有用資源
- Symfony - 快速指南
- Symfony - 有用資源
- Symfony - 討論
Symfony - Cookie 和 Session 管理
Symfony HttpFoundation 元件以面向物件的方式提供 Cookie 和 Session 管理。Cookie 提供客戶端資料儲存,並且僅支援少量資料。通常,每個域為 2KB,具體取決於瀏覽器。Session 提供伺服器端資料儲存,並支援大量資料。讓我們看看如何在 Symfony web 應用中建立 Cookie 和 Session。
Cookie
Symfony 提供 Cookie 類來建立 Cookie 專案。讓我們建立一個名為 color 的 Cookie,其值設定為 blue,並在 24 小時後過期。Cookie 類的建構函式引數如下所示:
- name (型別:字串) - Cookie 名稱
- value (型別:字串) - Cookie 值
- expire (型別:整數/字串/日期時間) - 過期資訊
- path (型別:字串) - Cookie 可用的伺服器路徑
- domain (型別:字串) – Cookie 可用的域名地址
- secure (型別:布林值) - Cookie 是否需要在 HTTPS 連線中傳輸
- httpOnly (型別:布林值) - Cookie 是否僅在 HTTP 協議中可用
use Symfony\Component\HttpFoundation\Cookie; $cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/', 'somedomain.com', true, true);
Symfony 還提供以下基於字串的 Cookie 建立選項。
$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100; path=/; domain = somedomain.com; secure; httponly');
現在,需要將建立的 Cookie 附加到 HTTP 響應物件的 header,如下所示:
$response->headers->setCookie($cookie);
要獲取 Cookie,我們可以使用 Request 物件,如下所示:
$cookie = $request->cookie->get('color');
這裡,request->cookie 的型別為 PropertyBag,我們可以使用 PropertyBag 方法操作它。
Session
Symfony 提供了一個實現 SessionInterface 介面的 Session 類。重要的 Session API 如下:
start − 啟動 Session。
Session $session = new Session(); $session->start();
invalidate − 清除所有 Session 資料並重新生成 Session ID。
set − 使用鍵將資料儲存在 Session 中。
$session->set('key', 'value');
我們可以在 Session 值中使用任何資料,從簡單的整數到複雜的 objects。
get − 使用鍵從 Session 中獲取資料。
$val = $session->get('key');
remove − 從 Session 中刪除一個鍵。
clear − 刪除 Session 資料。
FlashBag
Session 提供了另一個有用的功能,稱為 FlashBag。它是一個特殊的容器,位於 Session 內,僅在頁面重定向期間儲存資料。它在 HTTP 重定向中很有用。在重定向到頁面之前,可以將資料儲存到 FlashBag 中,而不是普通的 Session 容器,並且儲存的資料將在下一個請求(重定向頁面)中可用。然後,資料將自動失效。
$session->getFlashBag()->add('key', 'value'); $session->getFlashBag()->get('key');