更改会话ID一旦启动

时间:2014-05-28 15:25:56

标签: php session zend-framework

我正在使用Zend框架1,我需要在运行时使用预定义的前缀更改会话ID,但是我收到以下错误"会话已经启动。必须先设置会话ID。"问题是即使在调用destroy和writeclose之后,会话状态仍然保持启动状态。我也试过使用php方法unset&摧毁但仍然是同样的问题。

$oldSession = new Zend_Session_Namespace();
Zend_Session::destroy();
Zend_Session::writeClose();

$sessId = "dskjfghdsjfhsdkf"; //Random hash
Zend_Session::setId("myprefix".$sessId);

$newSession = new Zend_Session_Namespace();
foreach($oldSession as $idx => $data){
    $newSession->$idx = $data;
}

1 个答案:

答案 0 :(得分:0)

看起来不可能,

Zend_Session.php的片段:

 if (!self::$_unitTestEnabled && defined('SID')) {
        /** @see Zend_Session_Exception */
        require_once 'Zend/Session/Exception.php';
        throw new Zend_Session_Exception('The session has already been started.  The session id must be set first.');
    }