2012-09-17 80 views
1

我試圖設置它,所以如果您登錄到我的網站(使用codeigniter)會話繼續到我的多個網站的其他域(而不是子域)。例如,如果您轉到domain.com並登錄,然後轉到domain2.com,則您將已在domain2.com上登錄。跨多個域(而不是子域)的PHP會話

我不知道從哪裏開始。

+0

你想讀這個類似的案例http://stackoverflow.com/questions/4759312/session-share-across-multiple-domains-on-same-server – WatsMyName

回答

1

想到的第一種方法是使用共享數據庫,該數據庫將保存「登錄」標誌,每個域都會輪詢和更新。使用Cookie不是一個選項,因爲它們綁定到域。

+0

你會如何檢測數據庫中的哪個記錄拉? –

+0

最初,您應讓所有用戶至少登錄一次您的所有網站,然後將共享ID設置爲每個域的Cookie。 – Endy

0

您需要使用一個域作爲主登錄系統(keyDomain)。然後,對於每個其他域2,您查詢keyDomain以獲取臨時密鑰,請使用此密鑰登錄到域2。 domain2的服務器將檢查keyDomain上的密鑰。

您在keyDomain上需要兩種方法。 - 一個建立鑰匙。他們必須是時間依賴性並且有效5分鐘。 - 一個檢查密鑰,檢查給定的密鑰對當前的密鑰,然後再次檢查前一個,以防查詢和檢查之間的時隙發生變化。 (當前密鑰和前一個密鑰都是有效的,因此它有效10分鐘)。

關鍵是一個簡單的字符串,包含time + user_ID + salt,全部編碼。

你應該看看臉書如何連接工作。

+0

多個域在一臺服務器上運行,一臺安裝Codeigniter。現在有什麼方法? –

+0

它是一樣的,除了服務器之間的通信簡化之外,您可以將密鑰存儲在數據庫中。存儲用戶ID +隨機字符串。 – bokan

+0

我將如何訪問數據庫?意思是,我怎麼會認識到一個用戶已經登錄,並且該用戶已經在數據庫中有一個條目了? –