来自非Zend PHP的Zend_Session_Namespace

时间:2011-05-13 13:11:41

标签: zend-framework zend-session

我需要将我的无框架代码与我全新的Zend应用程序集成。但他们需要分享会议。我面临的问题是 - 当我使用

从非zend php设置会话变量时
$_SESSION['MyApp']['user']=$user;

我无法从Zend应用程序访问会话,我试过了 -

print_r($_SESSION['MyApp']['user']);

$myAppSession = new Zend_Session_Namespace('MyApp');
print_r($myAppSession->user);

不起作用。信息 - 我有

resources.session.name = "MyApp"

在我的bootstrap ini文件中。

3 个答案:

答案 0 :(得分:0)

Zend_Session_Namespace只是$ _SESSION的包装器,所以这应该是直截了当的。当你说它不起作用时,$ _SESSION数组是否为空?如果是这样,请确保以相同的方式创建会话(即使用相同的会话存储,cookie名称等)。

答案 1 :(得分:0)

您将会话名称与ZF会话命名空间混淆。

会话名称是指存储在会话cookie中的值,对$_SESSION的实际内容没有任何影响。

要让您的应用共享会话,他们都需要使用session_name()session.name php.ini指令设置相同的名称。

答案 2 :(得分:0)

我找到了一条出路,Zend Session的会话ID与普通的PHP会话不同,所以我所做的是从zend发送会话ID和请求,并以会话ID开始会话 -

    if(isset($_REQUEST['sess_id'])) {
        $sess_id = $_REQUEST['sess_id'];
    }

    session_id($sess_id);
    session_start();

它不是很漂亮的代码,但它有效。