Zend Framework - 会话管理

会话是 Web 应用程序中非常重要的概念。它提供了在有限时间内将用户数据保留在 Web 服务器中的选项。Zend Framework 提供了一个单独的组件 zend-session 来处理会话信息。

安装会话组件

可以使用 Composer 安装会话组件,如下所示 −

composer require zendframework/zend-session

会话组件

Zend Framework 提供了六个组件来处理会话管理。所有这些组件都已在下面进行了说明 −

  • 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 是否存在。如果密钥不可用,则用值 1 初始化 count。如果可用,则按以下代码所示增加该值。

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

  • 在 myapp/module/Tutorial/view/tutorial/tutorial/session.phtml 中为 sessionAction、session.phtml 创建模板文件,然后渲染 count 值。

  • 刷新页面将增加 session 中 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