2011-05-30 93 views
3

我有一个网络服务器(IIS),在这里我有两个文件夹:website1website2,同一个webapp有两个不同的副本。有一次,我在登录其中的一个 - 说mylocalip/website1我通过很标准地做启动一个会话:

$_SESSION["user_id"] = x;

这在我的网站能正常工作。 但是,如果我当时去mylocalip/website2我发现自己还是登录很奇怪的是,如果我去mypublicip/website2我发现我自己没有登录

我的问题是:为什么我观察这种行为?

感谢和最好的问候。

回答

2

会话对象被分配给域名。您在这里使用原始IP,因此成为域名。两个文件夹都位于相同的域名下,因此它们共享Session对象。

但是,当您转到公共IP地址时,其他IP的会话cookie无效,因此您需要重新登录。

2

会话由PHP通过coockie检索。 coockie链接到该主机的主机或子文件夹。

因此,当在同一主机上更改文件夹时,您保留此coockie,并且您仍然登录。但是,当您从公共IP地址连接自己时,您没有相同的主机,因此有一个不同的主机会话。