Cookie允许您的应用程序存储少量文本数据(通常情况下, 4-6kB)在Web客户端上。但是,cookie有许多可能的用途 最常见的一种是维护会话状态。通常由服务器使用响应头设置,并随后由客户端作为请求头提供。
这是来自zce学习指南。
我的问题是
1. how a session state is maintained by cookie?
2. what happens to these cookies when we use session_destroy()?
答案 0 :(得分:1)
很短:
创建会话ID,在每次请求时将其发送到客户端,该会话ID存储在通常称为PHPSESSID的cookie中。客户端使用此会话ID进行响应,以告知服务器它属于哪个会话。
session_destroy仅取消设置数据,而不取消身份。因此,使用该方法不会触及cookie。
答案 1 :(得分:1)
简单地说,会话cookie在您导航给定站点时将远程会话绑定到您的浏览器。它包含一个通常沿PHPSESSID=3432DFGDFG43523
行的字符串,远程服务器将其标识为它正在管理的会话。
来自PHP网站:
访问您网站的访问者被分配了一个唯一的ID,即 所谓的会话ID。这可以存储在用户的cookie中 在URL中传播或传播。
会话支持允许您在请求之间存储数据 $ _SESSION超全局数组。当访问者访问您的站点时,PHP 将自动检查(如果session.auto_start设置为1)或打开 您的请求(显式通过session_start()或隐式通过 session_register())是否已发送特定会话ID 请求。如果是这种情况,则先前保存的环境是 重新创建。
http://www.php.net/manual/en/intro.session.php
调用session_destroy()
时,它的行为并不像您期望的那样。远程销毁会话,但不删除本地cookie。要执行此操作,您需要使用负日期调用setcookie(<session cookie name>)
以在客户端销毁它。再次,从PHP网站:
session_destroy()会销毁与当前关联的所有数据 会话。它不会取消任何与之相关的全局变量 会话,或取消设置会话cookie。要使用会话变量 再一次,必须调用session_start()。
为了完全杀死会话,喜欢将用户注销掉, 会话ID也必须取消设置。如果使用cookie来传播 会话ID(默认行为),然后会话cookie必须是 删除。 setcookie()可以用于此。