【问题标题】:Change Session ID Once Started开始后更改会话 ID
【发布时间】:2014-05-28 15:25:56
【问题描述】:

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

$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;
}

【问题讨论】:

    标签: php session zend-framework


    【解决方案1】:

    看来不可能,

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

    【讨论】:

    • 我知道这是导致问题的原因,但我的问题是如何解决它。 IE:强制关闭/销毁会话。
    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2012-12-06
    • 2011-01-19
    • 2012-08-03
    • 2014-06-16
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多