Answers:
这是因为drupal使用密钥保存会话,这意味着您应该执行以下操作
$_SESSION['yourkey']['xxx'] = serialize($data);
你可以试试看
function lists_session($key, $value = NULL) {
global $user;
static $storage;
// If the user is anonymous, force a session start.
if(!user->uid) {
drupal_session_start();
}
if ($value) {
$storage[$key] = $value;
$_SESSION['lists'][$key] = $value; // I use 'lists' in case some other module uses 'type' in $_SESSION
}
else if (empty($storage[$key]) && isset($_SESSION['lists'][$key])) {
$storage[$key] = $_SESSION['lists'][$key];
}
return $storage[$key];
}
因此,要在会话中保存变量:
lists_session("xxx", serialize($data));
并检索值,只需使用:
$myVar = lists_session("xxx");
就像MOLOT提到的那样,有时会话未针对匿名用户启动,那么您应该drupal_session_start()
手动进行。
根据docs,这就是您需要做的所有事情。
这意味着存在错误,或者正为匿名用户缓存您的页面,因此未读取会话数据。我会首先检查您的缓存设置。
Drupal 7有时不会自动为匿名用户启动会话。要使用他们的会议,你可能需要开始与力会议drupal_session_start才能够使用$_SESSION
。