1

我有两个这样的文件夹:

  1. /public/zend_app/
  2. /public/pure_php/

Drupal 已安装在 root 中。

现在,我想在第二条路径中创建一个会话并在 zend 中使用它。我尝试了一些不同的方法来做到这一点,但失败是结果!

我检查session_idsession_save_path两者现在是一样的。

在第二个文件夹中,我有这个:

session_start();
session_id($_COOKIE[PHPSESSID]);
$_SESSION[user] = 123;

在第一个:

$someNamespace = new Zend_Session_Namespace('ns');
//......

session_id($_COOKIE[PHPSESSID]);
print_r($_SESSION);

但它返回空数组!

我也在第二个文件夹中试过这个:

set_include_path ( $zend_path );
include_once $zend_path . '/Session.php';
$user = new Zend_Session_Namespace('user');

但是我收到了这个错误:(我无法阻止运行 session_start 来逃避这个错误)

Zend_Session_Exception:会话已经由 Zend_Session::start() 中的 session.auto-start 或 session_start() 启动(C:\wamp\www\zend_app\library\Zend\Session.php 的第 462 行)。

现在我的问题是如何与 zend 共享它?Zend 是否使用特殊处理程序?如何在纯 php 代码中使用它?

4

1 回答 1

1

看一眼:

http://framework.zend.com/manual/1.12/en/zend.session.basic_usage.html

$myNamespace = new Zend_Session_Namespace('myNamespace');

// $myNamespace corresponds to $_SESSION['myNamespace']

摆脱session_id(),你不需要给 PHP cookie,它会自动处理。

我刚刚在 ZF 控制器中尝试过这个:

$session = new Zend_Session_Namespace('ns');
$session->foo = "bar";
print_r($_SESSION);

这就是我得到的:

Array
(
        [ns] => Array
        (
            [foo] => bar
        )
}

所以我$_SESSION['ns']['foo']现在可以用纯 PHP 访问。我还可以在纯 PHP 中设置值:

$_SESSION['ns']['baz'] = "quz";

以及后来在 ZF 中的访问:

echo $session->baz; // gives me "quz"
于 2013-04-05T02:22:33.623 回答