2013-05-29 69 views
1

我試圖將當前用戶ID從一個網站傳遞到另一個網站。將當前登錄用戶從一個域註冊到另一個域

例如,用戶登錄users.domain.com會創建用戶標識的$ _SESSION ['uid']。 我需要能夠在domain.com上獲得此用戶ID值。

我已經嘗試設置session_set_cookie_params:

session_set_cookie_params(0, "/", ".domain.com", false, false); 

,這不會工作我的本地服務器上,但不與我的託管公司,可能是因爲會話數據存儲在不同的服務器或他們根本就不允許它。

我已閱讀許多帖子/答案使用$ _GET,Cookie或HTTP頭來存儲用戶ID,但我覺得這是一個非常不安全的方式。

Facebook的喜歡怎麼用$ facebook-> getUser(); ?

任何幫助將不勝感激,我一直在網上衝浪很長一段時間沒有運氣。
謝謝,克里斯。

+0

您是否有權在兩臺服務器上創建數據庫表? –

+0

@Phil Crosyes是的,事實上,這兩個網站都將連接到相同的MySQL數據庫 – Chris

+0

甚至更​​好:-) –

回答

1

此答案僅適用於您可以在原始服務器上創建數據庫表的情況。

我不會寫代碼,而是引導其更多:

1)你叫像tbl_auth_tokens具有以下字段的原始服務器上創建一個表:record_id (auto_increment primary_key)user_id (int)token_id (varchar (32))

2)之前將用戶重定向到其他域,生成一個隨機令牌,使用MD5(或含有足夠的隨機字符串其他一些散列函數,使其獨特的。

3)保存的用戶ID和令牌ID到tbl_auth_tokens表中,將用戶重定向到查詢字符串中的token_id的其他域。

4)在新服務器上,使用提供的令牌標識從原始服務器數據庫中檢索用戶標識,然後完全刪除令牌記錄。

此方法至少會停止用戶標識的可見,任何潛在的超級用戶將只會看到一個用戶在第二臺服務器上進行過驗證後會刪除的token_id。

另外,您可能需要創建一個自動刪除功能,以便在閒置2分鐘後刪除令牌。

如果您需要更多指導,請隨時評論:)

相關問題