在浏览器中清除会话cookie

时间:2014-03-03 10:03:40

标签: php session session-cookies

我需要对会话和会话cookie逻辑进行一些确认。

当你在浏览器中手动关闭浏览器/删除会话cookie时,会发生什么呢?顺便说一下,默认情况下它们的结果是否相同?)?

在给定的情况下,会话cookie的删除发生在客户端 浏览器是否向Web服务器(即Apache)发送一条隐含消息,说明当前的session_id应该被销毁并可以重用?或者,Web服务器是否有一种机制可以重新使用长时间处于非活动状态的session_id?

结果问题:
在第二种情况下,如果从客户端销毁会话,PHP如何知道何时从PHP文件系统(tmp)中清除当前的$ _SESSION全局变量? Apache是​​否向PHP发送命令以删除具有会话信息的相应文件,在重新使用session_id之前的那一刻?这些会话文件是否保留在那里直到某个到期时间(或者当会话cookie被销毁时它们是否真的被立即销毁)?

你可能会注意到,我在这里遇到了一些困惑 谢谢你帮我澄清一下。

编辑:
我在谈论这些会话cookie:

enter image description here

2 个答案:

答案 0 :(得分:0)

有两种类型的Cookie:

1) Server side cookie
2) Client (HTTP) side cookie

当您从浏览器中清除Cookie时,它仅清除客户端Cookie(计算机上的Cookie)。是的,为所有cookie设置了到期时间。

您的一些信息:

客户端Cookie

Cookie是网站用于在浏览器上存储状态信息的键/值对。假设您有一个网站(example.com),当浏览器请求网页时,该网站可以发送cookie以在浏览器上存储信息。

浏览器请求示例:

GET /index.html HTTP / 1.1 主持人:www.example.com 来自服务器的示例答案:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest  of the response

这里有两个cookie foo = 10和bar = 20存储在浏览器中。第二个将于9月30日到期。在每个后续请求中,浏览器都会将cookie发送回服务器。

GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*
SESSIONS: Server side cookies

服务器端cookie称为“会话”。在这种情况下,网站在浏览器上存储一个包含唯一会话标识符的cookie。状态信息(foo = 10和bar = 20以上)存储在服务器上,会话标识符用于将请求与存储在服务器上的数据进行匹配。

点击此处了解更多详情:

What is the difference between server side cookie and client side cookie?

When session cookies are cleared, they are removed from the client (your machine). Now, the server can't identify you since it doesn't know the session id which was in the cookie you cleared recently, and so it looks like your session is cleared.

部分功劳归于那个回答这个问题的家伙!!

答案 1 :(得分:0)

如果您从浏览器中删除会话数据,则不会向服务器反馈以销毁给定会话。

会话在一段时间后被破坏,会话终身。 AFAIK设定为15分钟。