【发布时间】:2013-04-16 14:43:57
【问题描述】:
我一直在开发一个 webApp,它应该只能通过使用 AJAX 来执行任务。它似乎工作得很好,但我遇到了一个问题,因为我没有在公共站点上存储 Session 变量。
我的登录过程与 iCloud 的类似。您到达一个要求登录的页面。您的登录信息使用 AJAX 发送到服务器并返回 true 或 false。如果为真,登录框会消失,您就可以开始使用应用程序了。
当您查看上图时,您会看到两个绿色框是完全相同的站点,没有任何 URL 刷新或任何东西。就是同一个页面。
粉红色框表示尚未注册任何Sessions 的Apache 服务器。我的 Session Class 是使用session_set_save_handler 理念构建的。
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc')
);
我似乎无法找到一种方法让公共站点在没有会话 ID 的情况下请求 pink 服务器上的数据。谁能告诉我session_set_save_handler 想法背后的想法,就像我 6 岁一样?我已经阅读了 PHP 手册以了解详细信息,但它确实让我感到困惑。
如果有人知道这种通信方法如何正常工作,请告诉我。所有的 Apache 服务器都通过 LAN 网络连接,并且能够通信。此外,他们都可以访问 Apache 包含库中的相同 Session Class。
【问题讨论】:
-
我建议序列化/反序列化
$_SESSION并将其存储在Sessions表中。 -
但是 Apache 服务器如何知道在请求期间要处理哪个 Session?
-
如果我没有误读:您将新会话保存到一个表中 - 在一个中心位置 - 每个 apache 服务器都可以从那里读取它?
-
完全正确。我的困惑是 apache 服务器应该如何知道它应该处理哪些会话
-
@PhilipJensBramsted 是的。 (HTTP_ONLY 是一种防止 Javascript 直接读取的保护,但不适用于 ajax(它将自动发送))
标签: php database apache class session