【发布时间】:2012-04-06 21:29:54
【问题描述】:
我一直在互联网上对会话和 cookie 进行大量研究,我不断遇到的关于会话的论点是,如果禁用 cookie,它不会影响会话。
不过,每次清除 cookie 时,我的会话变量似乎也会清除。另外,我在一些网站上读到会话实际上应该使用 cookie 清除。
谁能给我解释一下?
【问题讨论】:
我一直在互联网上对会话和 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。在 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。 (但我不建议这样做)
【讨论】: