清除 cookie 时 PHP 会话变量消失了


PHP session variables gone when clearing cookies

我一直在互联网上做了很多关于会话和cookie的研究,我一直遇到的会话论点是,如果禁用cookie,它不会影响会话。

尽管如此,每次清除 cookie 时,我的会话变量似乎也会清除。另外,我在一些网站上读到,会话实际上应该使用 cookie 清除。

有人可以向我解释一下吗?

如果可能的 php 将其会话 ID 存储在 cookie 中。如果您的浏览器拒绝该选项,它将携带会话 ID 以及查询字符串。

如果你杀死了你的cookie并且没有进行查询字符串调整,php会忘记你是谁!

但是,可以通过 http://de2.php.net/manual/en/session.configuration.php#ini.session.use-cookies 禁用cookie的使用

你错了。 会话依赖于饼干。 当您请求页面时,将向服务器发送包含会话 UID 的 Cookie。 因此,清除 cookie 将导致会话丢失。

如果需要,您可以在get中强制使用PHP SESS ID,而不是在cookie中,默认的是cookie

会话通过存储具有近期(有时甚至是负)到期日期的 cookie 来利用 cookie。在PHP中,默认情况下可以在名称PHPSESSID下找到此cookie。运行时需要使用 PHP 中的 session_start 函数来加载和关联/识别用户和关联的会话信息。

由于会话是一种特殊类型的 Cookie,因此清除 Cookie(即使禁用 Cookie)也可能会导致会话标识符丢失,从而导致会话重置。

这是一篇很棒的文章,它澄清了PHP会话背后的任何谜团:

http://justinmccormick.com/wp/programming/php-sessions-explained

PHP 默认

将会话 ID 存储在 cookie 中,前提是您清除会话已消失。

您可以做的是启用session.use_trans_sid。这样,PHP 就会将会话 ID 附加到 url 中。(但我不建议这样做)