我一直在互联网上研究会话和Cookie,而我经常遇到的关于会话的论点是,如果禁用了Cookie,这不会影响会话。
但是,每次清除Cookie时,我的会话变量似乎也被清除了。此外,我在一些网站上读到,实际上应该随着Cookie清除会话。
请问有人能为我解释一下吗?
但是,每次清除Cookie时,我的会话变量似乎也被清除了。此外,我在一些网站上读到,实际上应该随着Cookie清除会话。
请问有人能为我解释一下吗?
您误解了。会话依赖于cookie。当您请求页面时,包含您的会话UID的cookie将被发送到服务器。因此,清除cookie将导致会话丢失。
如果需要的话,您可以强制使用 PHP SESS ID 在 get 中而不是在 cookies 中,但默认情况下是使用 cookies。
会话利用cookie存储近期(有时甚至是负数)到期日期的cookie。在PHP中,这个cookie默认的名称为PHPSESSID
。在运行时使用PHP中的session_start
函数来加载和关联/识别用户和相关会话信息是必需的。
因为会话是一种特殊类型的cookie,所以清除cookie(即使cookie已禁用)可能会导致会话标识符丢失,从而导致会话重置。
这是一篇很好的文章,可以解释PHP会话背后的任何神秘之处:
http://justinmccormick.com/wp/programming/php-sessions-explained
PHP默认将会话ID存储在cookie中,如果您清除了cookie,那么会话就会消失。
您可以启用session.use_trans_sid。这样,PHP会将会话ID附加到URL上。(但我不建议这样做)