我对这个Zend_Session事情很新。 我确实运行了Zend Framework App;现在我想为它添加一些“功能”。其中一项功能需要会话中包含的一些数据,因此它存储在所有站点上,用户将访问。
在我的Bootstrap中,我有
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initSession() {
Zend_Session::setOptions(array(
'use_only_cookies' => 'on',
'remember_me_seconds' => 864000
));
Zend_Session::start();
}
}
在我的模型中,有一个函数将数据存储到给定关键字的$ _SESSION中:
$_SESSION['foo'][urlencode($keyword)] = array(
'data' => $base->some->foo[0]->fish->data
);
如果未设置session-key(带有关键字),则新数据仅设置为session。我用zend调试器检查过,一切运行良好。
现在,当我首先调用页面时,一切运行良好。当我重新加载页面(或移动到另一个页面)时,会话中的值消失了。所以,确切地说,键就在那里,$ _SESSION数组是(例如)20个大小的条目。有一个条目,但它是null。
$_SESSION['foo']['my+foo']['data'] = null
我打电话的时候:
Zend_Debug::dump($_SESSION['foo']['my+foo']);
我明白了:
array (size=1)
'data' => null
所以,它就在那里,它已经杀死了我的价值。
当我使用简单的session_start()时,让它运行的神奇伏都教是什么?
答案 0 :(得分:1)
按Ctrl + F并将所有内容替换为Zend_Session_Namespace
对象而不是超级全局$ _SESSION:
$session = new Zend_Session_Namespace('foo');
$session->someData = array(
'data' => array('blah')
);
如果错误仍然存在,请在更改会话数据时扩展Zend_Session_Namespace
并放置echo
(用于调试),然后您将能够知道它是否被另一块没有你的确认的代码。
或者更好的是,使用交互式调试器并逐行检查类(即xDebugger)。那个永远不会失败;)
答案 1 :(得分:0)
drew010成功了,我必须将每个值保存到我的会话中,所以
$_SESSION['foo']['bar'] = array(
'data' => (int) $base->some->foo[0]->fish->data,
'moredata' => (string)$base->some->foo[0]->fish->moredata
);
等等。 谢谢!