【问题标题】:Session.gc_maxlifetime VS CookiesSession.gc_maxlifetime VS Cookie
【发布时间】:2011-08-03 23:24:35
【问题描述】:

我正在用 PHP 编写一个 Web 应用程序,并且我正在使用会话与著名的保存处理程序,该处理程序将会话存储在 MySQL 数据库中。我将session.gc_maxlifetime 设置为 604800(一周)。所以,我需要知道“记住我”功能,我应该使用 cookie 还是这样就足够了?因为会话总是在数据库中存储一周 - 当我关闭窗口然后打开它时,我我已登录。

我没有在 URL 中使用 SID,在我的会话表中我存储了 sid、时间、数据;时间每次都会更新。因此,当用户关闭窗口时,会话仍然会在此之后注册一周,当他回来时,时间会再次更新。

【问题讨论】:

    标签: php database session cookies


    【解决方案1】:

    您仍然需要 cookie。垃圾收集器用于服务器;它告诉 PHP 何时从服务器中删除会话数据。客户端仍然需要一个会话标识符才能访问会话。会话标识符通常存储在 cookie 中。因此,如果 cookie “超时”并被 webbrowser 从 cookie 缓存中删除,webbrowser 不再发送 cookie,服务器因此无法再将客户端与 session 匹配。

    总结: 会话有两个部分:存储在服务器上的实际数据,以及使服务器知道允许客户端访问服务器上的会话数据的 cookie。如果缺少一个,这一切都将不再有效。

    【讨论】:

    • 我每次都在延长会话,所以我认为它可以完成这项工作?!!
    • cookie 需要有 1 周的生存期,因为如果计算机关闭并在 6 天后再次打开,它无法刷新。
    • 我只是在 Chrome 上试一试,它在窗口关闭时删除会话,FF 并不奇怪!
    【解决方案2】:

    我需要知道我是否想要记住我功能,我应该使用 cookie 还是足够(会话)?!

    会话的时间应该比一周更有限。最多给它一个半小时。只要用户处于活动状态,会话就应该处于活动状态。

    所以去吃饼干吧。查看可用的开源软件中的现有实现。

    【讨论】:

      猜你喜欢
      • 2019-10-17
      • 2011-01-05
      • 2018-04-19
      • 1970-01-01
      • 2011-01-13
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多