2013-05-22 62 views
2

當我通過具有兩個IP地址的平衡網關將我的客戶端連接到我的託管服務器時,我在PHP中有一個奇怪的會話行爲。PHP會話與不同的客戶端IP丟失

我正確地用一個cookie初始化會話,我設置會話布爾變量和調試我打印此信息:

echo var_dump($_SESSION["islogged"]); 
    echo var_dump(session_id()); 
    echo var_dump($_SERVER["REMOTE_ADDR"]); 

比我刷新許多次的頁面,我得到兩個結果:

bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(false) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "48.129.84.146" 
bool(true) string(26) "ism1vg1de6v0b1r8b2ng337uh3" string(13) "96.19.184.38" 
... 

廣告你可以看到會話是一樣的,但會話欄更改。 你知道如何解決這個問題嗎?

這是登錄檢查:

$ISLOGGED=!empty($_SESSION["islogged"]) 

這是註冊碼:

$ISLOGGED=$_SESSION["islogged"]=$_POST["password"]==$password; 
+1

奇怪。你有更多的代碼嗎?它可能在別的地方。 –

+0

Php有點像「safe_mode」或類似的東西,檢查客戶端的IP? – Tobia

回答

0

有可能你使用了Suhosin,做額外的會話中使用的遠程IP地址重整。您可能需要仔細檢查配置中的cryptraddr and checkraddr值。

+0

我會問主持人。謝謝 – Tobia