3

我一直在互联网上对会话和 cookie 进行大量研究,我不断遇到的关于会话的论点是,如果禁用 cookie,它不会影响会话。

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

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

4

5 回答 5

5

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

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

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

于 2012-04-06T21:34:04.563 回答
0

你误会了。会话依赖于 cookie。当您请求一个页面时,一个包含您的会话 UID 的 cookie 将被发送到服务器。因此清除 cookie 将导致会话丢失。

于 2012-04-06T21:33:24.470 回答
0

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

于 2012-04-06T21:35:19.800 回答
0

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

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

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

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

于 2012-04-06T21:37:05.197 回答
0

默认情况下,如果您清除会话已消失,PHP 会将会话 ID 存储在 cookie 中。

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

于 2012-04-06T21:37:09.403 回答