为什么cookie路径不生效?

发布于 2024-12-16 17:53:58 字数 505 浏览 3 评论 0原文

我的 Apache public_html 根目录下有 2 个项目。一个是“/project1”,另一个是“/project2”。项目 2 只是项目 1 的重复,但进行了一些修改以适应不同的目标。它们具有相同的核心代码,因此使用的会话名称是相同的。

我以这种方式为项目 1 初始化会话:

ini_set("session.cookie_path","/project1");
session_name("sid");
session_start();

对于项目 2 非常相似:

ini_set("session.cookie_path","/project2");
session_name("sid");
session_start();

cookie 路径不相等,因此即使使用相同的 cookie 名称(这里是“sid”),PHP 也应该能够区分它们。

但有趣的是,当项目 1 的管理员登录时,项目 2 的管理员也登录了。

There are 2 projects under my Apache public_html root. One is "/project1" and the other is "/project2". Project 2 is just duplicate of project 1 but with some modification to fit a different goal. They have the same core code, so the session names used are the same.

I initialize session this way for project 1:

ini_set("session.cookie_path","/project1");
session_name("sid");
session_start();

And very similar for project 2:

ini_set("session.cookie_path","/project2");
session_name("sid");
session_start();

The cookie paths are not equal, so even with the same cookie name (here is 'sid'), PHP should be able to differentiate them.

But the fun is that when admin on project 1 logins, then the admin in project 2 is also interestingly logged in.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月流歌 2024-12-23 17:53:58

有些浏览器不喜欢带有路径且没有过期时间的 cookie,因此您可以添加:

ini_set('session.cookie_lifetime', 3600);

PHP 只发送一次会话 cookie(如果丢失),然后强制 PHP 在 session_start() 你可以添加:

session_regenerate_id();

Some browser don't like cookies with path and without expiration, so you can add:

ini_set('session.cookie_lifetime', 3600);

The session cookie is sent only one time by PHP (if missing), then to force PHP to resend the cookie, with updated expiration time, after session_start() you can add:

session_regenerate_id();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文