2014-03-12 228 views
0

我有一個帶有兩個域的單個服務器。我使用相同的SESSION ID(假設您在兩臺服務器上手動更改「PHPSESSID」的cookie值,或在session_start之前使用session_id(...))。 這兩個域使用的會話文件是相同的,我在磁盤上驗證它。在同一臺服務器上的域之間共享會話

會發生什麼情況是當我更改域時會話被清除。我的意思是清除兩個域名,而不寫任何會話。

注意到,這個工作幾個星期前在同一臺服務器上,並沒有發生任何改變(至少我們沒有手動修改/升級的任何東西)

我使用調試腳本這些,相同

設置會話:

<? 
session_id(PUT_HERE_THE_SAME_SESSION_ID); 
session_start(); 
$_SESSION['KEY'] = 'VALUE'; 
?> 

檢查會話:

<? 
session_start(); 
echo "SESSION ID: ".session_id()."<br>\n"; 
print_r($_SESSION); 
?> 
每個服務器上

神奇的行爲:對A A
檢查會話
設置會話,一切都很好
刷新,等待或還有什麼的A,然後檢查,確定第B
檢查會話 - >再次清空
檢查在A - > EMPTY !!!!!

如果換成A和B.

任何好的建議表示讚賞同樣的行爲。
我不想另有辦法做到這一點,我需要了解發生了什麼。

+1

就我所知,會話不能在不同的「域」之間共享。這是一個安全問題。 –

+0

你怎麼知道它?有沒有文件? 我讓它工作了! –

+0

據我所知,會話存儲在文件中,並且有一個巨大的唯一文件夾。數據是序列化的,但沒有用每個網站的不同密鑰加密。 –

回答

0

這可能是可能的,但是suhosin會阻止它在默認配置下使用文檔根作爲關鍵字來加密會話數據。 因此,不能以這種方式共享不同域的會話。

相關問題