我无法解决此会话相关问题!

时间:2009-12-11 13:26:13

标签: php zend-framework session file-upload

我正在使用Zend Framework和用PHP编写的第三方应用程序来上传文件。 上传过程就像ajax一样,我可能会因此应用程序引起烦人的问题。

问题是上传应用程序以某种方式破坏了我的Zend_Session!

这是我得到的错误(使用firebug控制台):

http://pastie.org/738834

这是我的ZF控制器中的代码可以正常工作,但是在错误显示之后,如果我转到此控制器,我将被重定向到google.com

public function init()
    {
        $this->_projects = new Projects();
        $this->_memberSes = new Zend_Session_Namespace('MyMember');
    }

    public function preDispatch()
    {
        $member = $this->_memberSes->member;

        if ($member==null){
            $this->_redirect('http://www.google.com');
        }
    }

第三方应用中有问题的代码如下所示: http://pastie.org/738837

我知道我的问题不是很清楚,但我的想法和任何形式的帮助对我来说意味着很多! 感谢。

1 个答案:

答案 0 :(得分:0)

这就是发生的事情:

  1. 正在将类ObjectClass的对象实例序列化到会话中。
  2. 请求关闭时,会存储会话文本。
  3. 在下一个请求中,将检索并反序列化会话文本。
  4. 但是,当PHP尝试反序列化您的对象时,它不知道ObjectClass,因为ObjectClass类文件未包含请求,只是创建它时的最后一个请求。它可能会失去蓝图。
  5. 因此,请确定哪个类被填充到会话中,并确保include 每个请求,以防万一。

    编辑: 或者,正如Nicky所说,自动加载器可以在这里提供帮助:

    require_once 'Zend/Loader/Autoloader.php';
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('MyApp_');
    $autoloader->setFallbackAutoloader(true);