我有一个网络服务器(IIS),在这里我有两个文件夹:website1
和website2
,有两个不同的同一个webapp副本。一旦我登录其中一个 - 比如说mylocalip/website1
我就会非常标准地开始一个会话:
$_SESSION["user_id"] = x;
这在我的网站上运行良好。
但是,如果我转到mylocalip/website2
,我发现自己仍然登录。很奇怪,如果我去mypublicip/website2
我发现自己没有登录。
我的问题是:为什么我会观察这种行为?
谢谢和最诚挚的问候。
答案 0 :(得分:2)
PHP会通过coockie检索会话。 coockie链接到该主机的主机或子文件夹。
因此,在更改同一主机上的文件夹时,您保留此coockie,并且您仍然登录。但是当您从公共IP地址连接自己时,您没有相同的主机,因此具有不同的会话
答案 1 :(得分:2)
会话对象已分配给域名。您在这里使用原始IP,因此它成为域名。两个文件夹都在同一个域名下面,因此它们共享Session对象。
但是,当您转到公共IP地址时,其他IP的会话cookie无效,因此您需要重新登录。
答案 2 :(得分:1)
尝试使用session_set_cookie()并将path
参数设置为/website1
。