如何在Drupal 6中存储和检索自定义会话变量?

时间:2009-07-10 15:48:07

标签: php drupal session

Drupal使用自定义会话处理程序来更改熟悉的......:

$_SESSION['foo'] = 'bar';
echo $_SESSION['foo'];

...行为。上面的会话变量“foo”不会在页面之间保持不变。

Drupal.com上的许多评论和论坛条目引发了Drupal出于性能原因和服务器群集支持而使用自定义会话处理程序的问题。但是,我没有找到回答问题的具体示例 - “需要在Drupal中跨页面管理自己的会话变量而不想使用cookie?这就是你如何做到的......”

有没有人有这方面的经验?我的用法不在外部Drupal页面内,而是在模板页面本身内。这适用于匿名用户,而不是登录用户。在这种情况下,$ _SESSION行为与预期一致。

1 个答案:

答案 0 :(得分:17)

好的,这就是答案 - $ _SESSION适用于经过身份验证的用户以及预期的匿名用户 - 如果没有其他问题!

我发现我遇到了以下问题;我的Drupal“用户”表(或者我的情况是“drupal_users”)错过了UID为零(“0”)的用户。

Drupal使用UID 0通过其自定义会话处理程序管理数据库中的会话。如果表中不存在该用户(默认安装应该存在),则Drupal无法将会话信息附加到匿名用户。