繁体   English   中英

无法在SocialEngine中使用Zend_Session_Namespace

[英]Cannot use Zend_Session_Namespace in SocialEngine

我正在尝试使用Zend_Session_Namespace来帮助我完成更改用户密码的任务。 为此,当他们第一次访问重置页面时,我需要存储他们的GET请求的一些值。 我想用Zend_Session_Namespace做到这一点。 然后,我想使用我保存在Zend_Session_Namespace中的值更新用户请求密码(在同一页面中)。 问题是当我访问它们时,保存在Zend_Session_Namespace中的值是null。 但是,我仍然可以使用典型的$_SESSION变量来完成这项工作。 有人知道我错了吗? 我是否缺少有关使用Zend_Session_Namespace的提示? 我是否需要使用Zend_Registry或类似的东西?

我的动作代码如下:

/**
 * 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语句之前。 此刻您echo 'phone: ' . $this->session->phone echo 'phone: ' . $this->session->phone线不会执行任何操作,因为未在POST请求上设置$this->session

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM