Php 无法在SocialEngine中使用Zend_会话_命名空间

Php 无法在SocialEngine中使用Zend_会话_命名空间,php,zend-framework,socialengine,zend-session-namespace,Php,Zend Framework,Socialengine,Zend Session Namespace,我试图使用Zend_会话_名称空间来帮助我更改用户密码。为此,我需要在他们第一次访问重置页面时存储GET请求的一些值。我想用Zend_Session_名称空间来实现这一点。然后,我想使用我保存在Zend_Session_命名空间中的值更新用户post请求(来自同一页面)中的密码。问题是,当我访问Zend_会话_名称空间中保存的值时,它们是空的。但是,我仍然可以使用典型的$\u SESSION变量来完成这项工作。有人知道我错在哪里吗?我是否遗漏了一些使用Zend_会话_名称空间的技巧?我需要使用Z

我试图使用Zend_会话_名称空间来帮助我更改用户密码。为此,我需要在他们第一次访问重置页面时存储GET请求的一些值。我想用Zend_Session_名称空间来实现这一点。然后,我想使用我保存在Zend_Session_命名空间中的值更新用户post请求(来自同一页面)中的密码。问题是,当我访问Zend_会话_名称空间中保存的值时,它们是空的。但是,我仍然可以使用典型的
$\u SESSION
变量来完成这项工作。有人知道我错在哪里吗?我是否遗漏了一些使用Zend_会话_名称空间的技巧?我需要使用Zend_注册表或类似的东西吗

我的行动代码如下:

/**
 * This handles password change
 */
public function changepasswordAction() {        
    $passwordForm = new Advancedsms_Form_ChangePassword();
    $this->view->form = $passwordForm;

    //If it is NOT post, the user has to provide recovery code and phone number
    if(!$this->getRequest()->isPost()) {
        $phone = filter_input(INPUT_GET, 'phone', FILTER_SANITIZE_URL);
        $recovery = filter_input(INPUT_GET, 'recovery', FILTER_SANITIZE_URL);
        $this->session= new Zend_Session_Namespace('RecoverySession');
        $this->session->phone= $phone;
        $this->session->recoveryCode = $recovery;   
        print_r($this->session);
        $_SESSION['phone'] = $phone;
        $_SESSION['recovery'] = $recovery;
    }
    if($this->getRequest()->isPost()) {            
        $params = $this->getRequest()->getParams();
        print_r($params);
        echo 'phone: ' . $this->session->phone .PHP_EOL;
        echo 'recovery: ' . $this->session->recoveryCode . PHP_EOL;
        echo $_SESSION['phone'] . ',' . $_SESSION['recovery'];
    }
}

您需要移动此行:

$this->session= new Zend_Session_Namespace('RecoverySession');
在if语句之前执行。此时,您的
回显“phone:”$此->会话->电话
线路将不起任何作用,因为未在POST请求中设置
$this->session


您应该始终以最详细的PHP错误级别编写PHP代码,这将显示针对此类问题的警告。

但是,第一个请求是get,因为phone和recovery是url参数。那么,为什么它不能设置会话?我不确定我是否理解你的问题。第一个请求应该存储电话和恢复参数。我只是建议移动创建名称空间对象的行。在POST请求中,您引用的是
$this->session
,但该变量不存在。(数据将在会话中,但您用于访问该数据的命名空间对象尚未声明。)您的意思是每次需要访问Zend_会话_命名空间时,我都需要再次实例化它?是的
Zend\u Session\u Namespace
只提供了一种访问
$\u Session
中存储的数据的方法。创建它的新实例不会重置其中已有的任何数据。