5

我的 PHP Web 应用程序当前将其会话 cookie 域设置为example.com. 我想把它改成.example.com. 对于新访客,ini_set('session.cookie_domain', '.example.com')作品。对于在进行此更改之前已经拥有 PHPSESSID cookie 的访问者,域将保持旧值。如何在不要求当前用户删除其 cookie 的情况下更改会话 cookie 上的域?

  • 我不能使用 JavaScript 来更新 cookie,因为出于安全原因它是 HTTPOnly。
  • 删除服务器上的会话不会重置整个 cookie,它只会更新 cookie 值(保持域相同)。
  • 现代浏览器会在重新启动时保留会话,因此即使 cookie 设置为在浏览器会话结束时过期,浏览器会话实际上永远不会结束。

我能想到的唯一可能是将cookie设置为过去过期,然后重定向以获取新的cookie。但我不知道哪些访问者的 cookie 域设置不正确。

4

1 回答 1

3

session_name()在开始会话之前设置一个新的。这样 cookie 的名称就会改变,任何旧的 cookie 都会被忽略。只有新的 cookie 会被发送出去并为会话工作。

于 2013-07-08T15:52:26.170 回答