Zend Framework - 會話管理



會話在 Web 應用程式中是一個非常重要的概念。它提供了將使用者資料在 Web 伺服器上持久化一段時間的功能。Zend 框架提供了一個單獨的元件 **zend-session** 來處理會話資訊。

安裝會話元件

會話元件可以使用 **Composer** 安裝,如下所示:

composer require zendframework/zend-session 

會話元件

Zend 框架提供了六個元件來處理會話管理。所有這些元件都已在下面解釋:

  • **Zend\Session\Container** - 讀取和寫入會話資訊的主要 API。

  • **Zend\Session\SessionManager** - 用於管理會話的整個生命週期。

  • **Zend\Session\Storage** - 用於指定會話資料如何在記憶體中儲存。

  • **Zend\Session\SaveHandler** - 用於將會話資料儲存和檢索到物理位置,如 RDBMS、Redis、MangoDB 等。

  • **Zend\Session\Validator** - 用於透過交叉檢查初始和後續請求的遠端地址和使用者代理來保護會話免受劫持。

  • **Zend\Session\Config\SessionConfig** - 用於配置會話的行為方式。

預設配置足以使用會話。使用上述元件,可以輕鬆處理會話的所有方面。

會話元件示例

讓我們遵循以下幾點建立一個新頁面來理解 Zend 框架中的會話。預設情況下,建立 **Container** 類的例項足以管理會話。

  • 在 **TutorialController** 中建立一個新的操作 **sessionAction**。

  • 初始化一個 **Container** 物件。

$c = new Container();
  • 檢查任意鍵 **count** 是否存在。如果該鍵不可用,則將 **count** 初始化為 1。如果可用,則遞增其值,如下面的程式碼所示。

if (!isset($c->count)) { 
   $c->count = 0; 
} else { 
   $c->count++; 
} 
  • 在 ViewModel 中註冊 count。

  • 為 sessionAction 建立一個模板檔案 - session.phtml,位於 myapp/module/Tutorial/view/tutorial/tutorial/session.phtml,然後渲染 **count** 值。

  • 重新整理頁面將增加會話中 **count** 的值。完整的列表如下所示:

TutorialController.php

public function sessionAction() { 
   $c = new Container();  
   if (!isset($c->count)) { 
      $c->count = 0; 
   } else { 
      $c->count++; 
   }  
   $view = new ViewModel([ 
      'count' => $c->count, 
   ]);  
   return $view; 
}

session.pthml

Session data, COUNT = <?= $this->count ?>

示例結果

Session data, Count = 5
廣告

© . All rights reserved.