【问题标题】:Where does $_SESSION get stored? [closed]$_SESSION 存储在哪里? [关闭]
【发布时间】:2013-01-17 03:36:24
【问题描述】:

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

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

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

我还希望我的用户保持登录状态。显然。

【问题讨论】:

  • 服务器。永远不要在客户端上。
  • 5 秒阅读manual 会回答这个问题。
  • 但是服务器如何存储多个会话 ID,以及当调用试图访问 $_Session 的帖子或函数时,它如何知道谁在访问服务器?
  • 您了解PHPSESSID、PHP、ASP.NET_SessionID、ASP.NET 和JSESSIONID Java 吗?
  • 我知道如何创建一个,至于使用 cookie 作为令牌我没有经验。在 ASP.NET 中,所有这些都已经通过使用它们的内置方法来处理

标签: php mysql session


【解决方案1】:

The PHP Documentation on Sessions对此很清楚,但我会总结一下:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        所以总结一下,

        $_SESSION[] = (服务器端)

        $_COOKIE[] = (客户端)

        【讨论】:

          猜你喜欢
          • 2010-10-02
          • 2013-11-08
          • 2022-06-27
          • 2018-09-14
          • 2013-12-01
          • 2016-08-09
          • 2016-02-21
          • 2011-03-02
          • 1970-01-01
          相关资源
          最近更新 更多