我一直在互联网上对会话和 cookie 进行大量研究,我不断遇到的关于会话的论点是,如果禁用 cookie,它不会影响会话。
不过,每次清除 cookie 时,我的会话变量似乎也会清除。此外,我在一些网站上读到会话实际上应该使用 cookie 清除。
有人可以向我解释一下吗?
如果可能的 php 将其会话 ID 存储在 cookie 中。如果您的浏览器拒绝,它会携带会话 ID 以及查询字符串。
如果你杀死你的cookies并且没有对查询字符串进行调整,php会忘记你是谁!
但是可以通过http://de2.php.net/manual/en/session.configuration.php#ini.session.use-cookies禁用 cookie 使用
你误会了。会话依赖于 cookie。当您请求一个页面时,一个包含您的会话 UID 的 cookie 将被发送到服务器。因此清除 cookie 将导致会话丢失。
如果需要,您可以强制在 get 中使用 PHP SESS ID 而不是在 cookie 中,默认的是 cookie
会话通过存储具有近期(或有时甚至是负数)到期日期的 cookie 来利用 cookie。PHPSESSID
在 PHP 中,默认情况下可以在名称下找到此 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。(但我不建议这样做)