Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Zend框架中处理会话处理的最佳方法_Php_Zend Framework_Cookies - Fatal编程技术网

Php 在Zend框架中处理会话处理的最佳方法

Php 在Zend框架中处理会话处理的最佳方法,php,zend-framework,cookies,Php,Zend Framework,Cookies,所以我在Zend框架中启动,希望实现一个站点范围的“用户”会话。。。。我可以从应用程序中的所有模块/控制器轻松访问的内容 我想,我应该在库中创建一个新名称空间并扩展控制器,比如: class MYCUSTOMLIB_Controller_Action extends Zend_Controller_Action { protected $_userSession; function preDispatch(Zend_Controller_Request_Abstract $re

所以我在Zend框架中启动,希望实现一个站点范围的“用户”会话。。。。我可以从应用程序中的所有模块/控制器轻松访问的内容

我想,我应该在库中创建一个新名称空间并扩展控制器,比如:

class MYCUSTOMLIB_Controller_Action extends Zend_Controller_Action
{
    protected $_userSession;

    function preDispatch(Zend_Controller_Request_Abstract $req)
    {
         $this->_userSession = new Zend_Session_Namespace('user');
    }
}
然后让我所有的控制器/模块/等等都从那扩展过来

或者我应该创建一个插件还是什么?您将如何制作此插件以将用户会话传递给控制器

或者我是在引导中完成的??再怎么传给管制员


我还应该使用Zend_Session_命名空间或Zend_Http_Cookie,以及如何加密和xss清理Cookie,还是自动完成?您应该在引导中初始化会话。您可以将其放入Zend_注册表并以这种方式访问它,也可以通过调用$this->getInvokeArg('bootstrap')从控制器访问引导


我也会在引导中初始化:

//Bootstrap.php
protected function _initUserSession()
{
    return new Zend_Session_Namespace('user');
}
然后我会使用动作助手:

// library/App/Controller/Action/Helper/Session.php
class App_Controller_Action_Helper_Session extends Zend_Controller_Action_Helper_Abstract
{
    function direct()
    {
        return $this->getFrontController()->getParam('userSession');
    }
}
您可以通过以下方式在控制器中访问它:

function indexAction()
{
    $session = $this->_helper->session;
}

您确定视图帮助程序吗?这看起来像是视图帮助程序和操作帮助程序的混合:)视图帮助程序也使用direct method()吗?对于view helper,它应该是session(),不是吗?抱歉。它应该是一个行动助手!我已经更新了代码。
function indexAction()
{
    $session = $this->_helper->session;
}