1

cookie 和会话在 PHP 中是否相互依赖?

删除或清除其中任何一个会影响另一个吗?

在浏览器中禁用其中一个会影响另一个吗?

PS我是新手。

编辑:我在写问题时是新手。这个问题很多新手都会遇到。

4

4 回答 4

2

他们完全独立...

  • Cookies 不能存储无限的价值,会话可以
  • 如果在会话中禁用了用户浏览器 cookie,则无法将数据存储在 cookie 中,因为会话 ID 可以附加到 URL
  • 将数据存储在会话中比存储在 cookie 中更好,因为 cookie 可以被调和
  • 如果您删除 cookie,那么只有在您的站点中检索这些 cookie 数据的功能将被禁用,但您将登录,如果您删除会话 cookie,您将被注销.. (1)
  • Cookie 存储在客户端计算机上,会话存储在您的服务器上
  • 如果您关闭浏览器而 cookie 保留在那里,则会话结束,除非它们被用户手动删除或直到它们过期

简而言之,您可以更好地控制会话而不是 cookie

(1) 例如,如果您正在设置 cookie 名称demo并且您正在使用启动画面,除非并且直到设置了演示,您才会显示启动画面

if(!isset($_COOKIE['demo'])) { //Now this will show lightbox always if user has disabled his cookies
   <script>...</script>
}

文章

http://www.klovera.com/php-sessions-vs-cookies/

参考

会议

饼干

于 2012-11-16T06:58:24.213 回答
2

会话存储在服务器上,而 cookie 存储在客户端上。您只能从浏览器中禁用 cookie。Cookies 根本不会影响会话。在禁用 cookie 的情况下,会话 ID 通过 URL 传递。如果您的 cookie 已启用并且会话 ID 通过删除 cookie 存储在 cookie 中,您将无法访问您的会话(它仍在服务器上,但您无法访问它)

会话也不能影响 cookie。

于 2012-11-16T06:58:53.500 回答
1

它们没有连接,但默认情况下 PHP 将会话 ID 存储在 cookie 中,指令session.use_cookies默认为 1

如果 cookie 被禁用,它将使用 URL。这可以使用session_use_trans_id 设置。(默认禁用)

但是如果你在客户端删除了一个会话cookie,那么下一个对服务器的请求将无法找到它关联的会话

清除会话不会影响 cookie,因为 cookie 是从客户端到服务器的 HTTP 请求中附加的。可以将 cookie 设置为在 x 时间后过期,然后在客户端将其删除。

于 2012-11-16T07:02:35.010 回答
0

所有答案都是正确的,只是想添加这个 - 如果你没有为 cookie 设置时间戳,那么 cookie 依赖于会话,它会在会话结束时过期。

于 2016-08-30T21:58:59.440 回答