【问题标题】:How can I isolate cookies on a same server?如何隔离同一服务器上的 cookie?
【发布时间】:2012-09-11 10:15:42
【问题描述】:

我在同一台服务器 Host 上有 2 个网站。我想将 Site 1 的 cookie 与 Site 2 隔离开来。我该怎么做?

我不想花钱,想在同一台服务器上托管两个站点。但是一个站点的 Cookie 不应干扰其他站点。

我的目录结构如下(我可以灵活地改变它,主要目的是让两者在同一台服务器上)

 www.mysite.com/       - website 1st
 www.mysite.com/site2  - website2nd

两者都有不同的代码并且彼此不相关。目前只是放在不同的目录中。当我echo $_SESSION['id']从2号干扰圣。

【问题讨论】:

  • 你对站点的定义是不同的目录?当您创建 cookie 时,您可以设置路径,这是他的第 4 个变量
  • @Dagon - 是的,两者都有不同的代码并且彼此无关。目前只是放在不同的目录中。当我echo $_SESSION['id']从第二个干扰圣。
  • 会话或 cookie?它们不是一回事
  • @Dagon - 我的意思是这些echo $_SESSION['id'] 行。
  • 简单的选择是在会话中设置站点(多维数组),即$_SESSION['site1']['id']='1';

标签: php webserver session-state session-cookies


【解决方案1】:

Cookie 具有与之关联的路径,但当路径是目录时,它也适用于其中的整个层次结构。您遇到的问题是站点 2 位于站点 1 的子目录中。

所以你需要把这两个网站放在不相交的目录中:

站点 1:www.mysite.com/site1 站点 2:www.mysite.com/site2

另一个选择是使用虚拟主机。 Cookie 与服务器主机名相关联,因此您可以拥有 www.mysite1.com 和 www.mysite2.com。那么服务器上的实际位置就无关紧要了。

【讨论】:

  • 所以如果站点 1:www.mysite.com/site1 站点 2:www.mysite.com/site2 那么在这种情况下,站点 2 上的 echo $_SESSION['id'] 不会干扰站点 1 吗?我说的对吗?
  • 什么是子域?他们是孤立的吗?
  • 创建 cookie 时,可以将其分配给 www.mysite.com.www.mysite.com。在第一种情况下,它仅适用于那个确切的域。第二种情况适用于域和所有子域。
  • 那么没有任何替代方法可以在两个不同的站点上隔离echo $_SESSION['id'] 的结果吗?
  • 查看session_set_cookie_params了解如何控制用于$_SESSION的cookie。
猜你喜欢
  • 2018-05-24
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多