Zend Framework - Session 管理

  • 简述

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

    Session 组件可以使用下面指定的Composer进行安装 −
    
    composer require zendframework/zend-session 
    

    Session 组件

    Zend 框架提供了六个组件来处理Session 管理。所有这些组件都在下面进行了解释 -
    • Zend\Session\Container − 用于读取和写入Session 信息的主 API。
    • Zend\Session\SessionManager − 它用于管理Session 的整个生命周期。
    • Zend\Session\Storage − 用于指定Session 数据在内存中的存储方式。
    • Zend\Session\SaveHandler − 它用于将Session 数据存储和检索到物理位置,如 RDBMS、Redis、MangoDB 等。
    • Zend\Session\Validator − 这用于通过交叉检查初始和后续请求的远程地址和用户代理来保护Session 不被劫持。
    • Zend\Session\Config\SessionConfig − 它用于配置Session 的行为方式。
    默认配置足以处理Session 。使用上述组件,可以轻松处理Session 的所有方面。
  • Session 组件示例

    让我们坚持以下几点来创建一个新页面来理解Zend Framework 中的Session 。默认情况下,创建Container类的实例来管理Session 就足够了。
    • TutorialController中创建新sessionAction
    • 初始化Container对象。
    
    $c = new Container();
    
    • 检查是否存在键count。如果该键不可用,请使用值 1 初始化count。如果可用,请递增该值,如以下代码所示。
    
    if (!isset($c->count)) { 
       $c->count = 0; 
    } else { 
       $c->count++; 
    } 
    
    • 在 ViewModel 中注册计数。
    • 在 myapp/module/Tutorial/view/tutorial/tutorial/session.phtml 中为Session 操作创建一个模板文件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