2011-05-30 97 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地址連接自己時,您沒有相同的主機,因此有一個不同的主機會話。