0

从 iphone 应用程序登录时,我调用了一个 php 脚本登录函数,该函数存储了用户 ID 的会话。此 ID 是否存储在服务器或 iPhone 上?

  $_SESSION['IdUser'] = $result['result'][0]['IdUser'];

我问的原因是 b/c 当我退出模拟器并重新启动它时会话显然没有被存储,所以我相信它被存储在服务器上。如果我希望多个用户同时在我的应用程序上,或者在客户端上会更好,我是否希望将会话存储在服务器上?服务器如何知道/从客户端获取会话 ID?谢谢。

此外,我希望我的用户保持登录状态。显然。

4

4 回答 4

2

Sessions 上的 PHP 文档对此非常清楚,但我将总结一下:

  1. $_SESSION存储在服务器上。它实际上位于具有会话名称的临时文件中(通常)。
  2. 服务器通过 cookie 识别用户的会话

如果您很容易让设备随每个请求发送相应的会话 cookie(就像网站一样),那么服务器存储对您来说就很好。否则,您可能需要使用本地存储。无需担心多个用户的会话会相互覆盖。

于 2013-01-17T03:40:19.710 回答
2

默认情况下,会话数据存储在服务器上。在 linux 中,通常在目录 /var/lib/php/ 中的文件中,但也可以存储在 db 或内存中。

cookie 存储在客户端上,其会话 ID 充当标识服务器端数据的令牌。在 /var/lib/php/ 中的会话数据示例中,存储在客户端 cookie 中的会话 ID 映射到该目录中的文件名。

于 2013-01-17T03:40:26.233 回答
1

在 PHP 的默认配置中,会话数据存储在服务器上,而标识符作为 cookie 存储在客户端上。

此 cookie 是否在您的应用程序的会话中持续存在取决于调用您的脚本的代码;您可以通过对同一脚本进行几次调用来轻松测试这一点,并查看会话是否保持“活动”状态。退出应用程序可能会或可能不会破坏您使用过的任何 cookie,但这正是会话的含义,即它们不是持久的。

如果您想要登录持久性,您可以将登录凭据存储在手机本身(确保使用密钥链),以便您可以重新建立与服务器的会话,以防它被中断。

于 2013-01-17T03:45:06.980 回答
0

会话或 $_SESSION[] 变量存储在服务器上。它与 Cookie 非常相似,只是它存储在服务器上。

所以总结一下,

$_SESSION[] = (服务器端)

$_COOKIE[] = (客户端)

于 2013-01-17T04:22:16.333 回答