【发布时间】:2011-03-27 23:21:25
【问题描述】:
我在一个网站上,我关闭了所有窗口,然后又返回,当然我已经登录了。
我需要让网站做其他事情。当我回去不登录时 - 很快在每次访问时创建一个新会话并一直保持它(没有超时)。
由于我设法在本地 apache 上执行此操作,但它无法在线工作,因此我在执行此操作时应注意哪些事项是否有合理的解释?
谢谢:)
【问题讨论】:
标签: php
我在一个网站上,我关闭了所有窗口,然后又返回,当然我已经登录了。
我需要让网站做其他事情。当我回去不登录时 - 很快在每次访问时创建一个新会话并一直保持它(没有超时)。
由于我设法在本地 apache 上执行此操作,但它无法在线工作,因此我在执行此操作时应注意哪些事项是否有合理的解释?
谢谢:)
【问题讨论】:
标签: php
制作 cookie 时,请将过期日期设置为过去。它应该允许您在会话中保持登录状态,但是一旦您关闭浏览器,浏览器将清除陈旧 cookie 的 cookie 罐以及您的会话。
【讨论】:
如果您确实关闭了所有窗口(而不仅仅是所有选项卡!),那么会话 cookie 应该被忘记 - 进入该站点的新浏览器窗口应该没有会话 cookie 可以通过,提示 PHP 创建一个新的会话。如果您的网站不是这样运行的,那么它可能使用了 session.cookie_lifetime 而非 0,从而使 PHP 创建了持久性 cookie 而不是会话 cookie。
PHP 也有可能在每次运行时销毁旧会话,以便从一段时间未使用的会话中回收空间。 php.ini 中的session.* 属性确定清理哪些会话(session.gc_maxlifetime)以及清理频率(session.gc_probability 和session.gc_divisor)。如果您希望会话的有效时间更长,请将 gc_maxlifetime 设置为更高的值。如果您希望它们永远有效,请将 gc_probability 设置为 0 - 但这是个坏主意,因为会话永远不会自动清理,并且会慢慢填满驱动器。
【讨论】: