我在我的服務器上的單個域中託管了幾個Facebook應用程序。同一個用戶可能會在一個會話中訪問兩個或更多的應用程序。我如何確保來自一個應用程序的某些數據不會在另一個應用程序中結束?由於用戶可能只需從應用程序導航,因此註銷不是一種選擇。如何在一臺服務器上處理一個用戶的多個PHP會話?
3
A
回答
8
如果您爲每個應用程序使用不同的session_name()
,那麼這些會話實際上是相互惰性的。
// Application 1
session_name("APP1");
session_start();
// Application 2
session_name("APP2");
session_start();
0
我能想到的將包括該人的會話數據使用的應用程序,如果你看到在用戶的會話數據錯誤的會話,你破壞了會議的解決方案。
0
只是一個想法:也許你想爲每個應用程序設置一個子域。這樣cookies和會話就會自動完全分開,而不是依靠某個功能(這可能會很慢,正如一個人在session_name()
手動註釋中指出的那樣)。
此外,我相信單獨的子域讓您更安全地利用漏洞因爲相同的原產地政策。 (對吧?)
+0
不是。取決於如何設置Cookie。通常它們都設置在父域中,因此來自site1.example.com的cookie仍然會看到來自site2.example.com的cookie –
0
通過爲每個應用程序使用不同的鍵,您可以製作類似會話部分的內容。你只需要確保密鑰的唯一性。每次你保存在適當的部分例如爲:
//save the ids into db or configuration file after it's generated
$app1id = uniqid('fbApp');
$app2id = uniqid('fbApp');
//Save data for application 1
$_SESSION[$app1id] = array('app' => 'data');
//Save data for application 2
$_SESSION[$app2id] = array('app' => 'data');
相關問題
- 1. PHP會話處理多個服務器
- 2. 如何在同一臺服務器上的多個域中維護PHP會話?
- 3. 如何管理多個服務器上的用戶會話?
- 4. PHP笨 - 處理多個數據庫在同一臺服務器
- 5. Quickfix處理來自多個服務器的同一會話
- 6. 如何在一臺服務器上創建多個客戶端?
- 7. 會話在同一服務器上的多個域上共享
- 8. 多臺服務器或一個服務器來處理來自多個客戶端的請求
- 9. apache服務器如何處理會話?
- 10. 如何在一臺服務器上監控多個Web項目?
- 11. 在php中處理多個會話
- 12. 在一臺服務器上管理多個IP地址的多個域名
- 13. Ion_auth - 在一個會話多個用戶
- 14. 在一個帳戶上的多個用戶:會話數據
- 15. 在同一臺機器上管理Play框架服務器的多個實例的會話詳細信息
- 16. 處理服務器上的多個用戶文件
- 17. 一個用戶的多個會話?
- 18. PHP在一臺服務器上工作,但不在另一臺服務器上
- 19. Grails/Spring rememberMe爲同一個用戶+會話併發處理多個瀏覽器
- 20. 如何在f5負載均衡器的情況下跟蹤會話,如何在同一個Web服務器上處理一個客戶端的所有請求?
- 21. 在Node.js中,如何讓一臺服務器在另一臺服務器上調用一個函數?
- 22. PHP:如何將一個大文件從一臺服務器上傳到另一臺服務器?
- 23. 在同一臺機器上的多個TcpClients作爲服務器
- 24. 上下文處理器,傳遞一個不存在的會話
- 25. 一個DSO處理器服務器
- 26. php在一個頁面上處理多個表單處理
- 27. 在一臺專用服務器上運行多個nginx ubuntu
- 28. 如何在同一臺服務器上使用兩個ssh
- 29. PHP - opendir在另一臺服務器上
- 30. 如何從另一臺服務器運行一個php文件?
尼斯一些數據會保存。我不知道你可以設置不同的會話名稱。我猜他們是與每個指定的應用程序綁定的? – chustar
如果每個應用程序都有自己的會話名稱,那麼是的。 session_name基本上最終成爲會話ID存儲的cookie的名稱。因此,如果每個應用都有其自己的唯一會話名稱,則用戶將會爲每個應用獲得一個cookie,並且每個會話都將是獨立的彼此的。另一種方法是在會話中使用子鍵'$ _SESSION ['app1'] [...]','$ _SESSION ['app2'] [...]'等等...... –