【问题标题】:I can't solve this session related issue!我无法解决此会话相关问题!
【发布时间】:2010-12-25 16:11:33
【问题描述】:

我正在使用 Zend Framework 和用 php 编写的第 3 方应用程序进行文件上传。 上传过程类似于ajax,我有烦人的问题可能是这个应用程序引起的。

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

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

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');
        }
    }

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

我知道我的问题并不完全清楚,但我没有想法,任何形式的帮助对我来说都意义重大! 谢谢。

【问题讨论】:

    标签: php zend-framework session file-upload


    【解决方案1】:

    这是正在发生的事情:

    1. ObjectClass 类的对象实例正在序列化到会话中。
    2. 在请求关闭时,会存储会话文本。
    3. 在下一个请求中,会话文本被检索和反序列化。
    4. 但是,当 PHP 尝试反序列化您的对象时,它不知道 ObjectClass,因为 ObjectClass 类文件没有包含在 this 请求中,只是创建时的最后一个请求。可以这么说,它失去了蓝图。

    所以,弄清楚会话中填充了哪个类,并确保您include每个请求,以防万一。

    编辑: 或者,正如 Nicky 所说,自动加载器可能会有所帮助:

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

    【讨论】:

    • 或确保自动装带器总能找到它
    • Tnx 用于回答人们,所以你认为问题出在我的 ZF 代码中吗?这可能是因为没有教义我没有这个问题。我有一个引导程序,据我所知,教义模型的自动加载已启用,请查看我的 Bootstrap.php pastie.org/738956
    • 当您启用 AutoLoader 时,如上所示,它将准确报告找不到哪个类。因此,例如,如果 TestObject 类是违规者,它将报告无法加载 TestObject.php。
    • 会接受答案,但你的解决方案并没有解决我的问题,我避免在会话中存储对象,问题解决了
    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多