【发布时间】:2011-05-07 20:56:42
【问题描述】:
我正在为 Drupal 6 开发一个自定义模块。我遇到了会话变量和带有 ajax 功能的自定义代码的问题。
如何从由 ajax 请求触发的后端 php 脚本访问 Drupal 创建的会话?
例如在模块的 .module 文件中,我将自定义 php 对象添加到 $_SESSION 变量。我可以在 .module 文件中访问它,即使它不是同一个页面。当我执行 jQuery ajax 请求并尝试访问 $_SESSION 上不可用的对象时。似乎整个会话都消失了,并且 $_SESSION 变量不存在。调用 session_start() 将创建新会话和空白 $_SESSION 数组。
我已经被这个问题困扰了两天。我只想从 ajax 请求的后端脚本访问原始会话。此外,我无法访问全局变量,例如$base_url 或 $user。
提前致谢。
【问题讨论】:
-
您的 Ajax 调用是否通过 Drupal 系统进行?听起来您可能正在为他们绕过 Drupal,这只是在自找麻烦。
-
不,它们没有通过 Drupal 的 ajax 系统处理,因为我无法让它工作。所有其他 ajax 请求都像往常一样工作,但会话失败。有没有办法从自定义 ajax 及其后端脚本访问会话?我确实在请求中得到了正确的会话名称和 ID,但是在 session_start 之前用它命名会话只会创建一个具有相同名称和 ID 的重复会话。虽然它们有不同的域(drupal 有 .domain.com,而新的只有 domain.com)。此外,drupal session 的过期时间是日期时间,而 new 只是“会话”。
-
好吧,你问错问题了——你应该问为什么你的 ajax 调用在 Drupal 中不起作用。而不是让 ajax 调用在 Drupal 外部路由并询问如何集成两个会话。
标签: ajax drupal session drupal-6