2014-04-18 41 views
0

我有一個關於在php會話的簡單問題。

如果我有一個Web服務器和我使用像

$_SESSION['user_login'] = 1; 

這個會話與其他用戶也分享會話?
我的意思是:

如果用戶A正在登錄,他的會話有1;
現在用戶B正在做一個登錄名和他會話有1

所以:

userA--->Session=1 
userB--->Session=1 

現在,用戶A做了註銷和我一起
unset($_SESSION['user_login']);

問題破壞會話:
the session of userB is still at 1??還是他的會議完成了?
我不明白會話是在每個線程的堆棧上還是與每個線程共享。

+0

'$ S_SESSION'也許應該是'$ _SESSION'。 – kelunik

+0

是的,謝謝...我修好了 –

回答

6

在PHP會話中,每個用戶。每個用戶都分配一個唯一的會話ID來識別他們的會話。只有擁有該會話ID的用戶才能訪問與其關聯的會話信息。

the manual

訪問者訪問你的網站被分配一個唯一的ID,即所謂的會話ID。這可以存儲在用戶端的cookie中,也可以在URL中傳播。

會話支持允許你存儲$ _SESSION全局數組中的請求之間的數據。當訪問者訪問您的網站,PHP會自動(如果session.auto_start被設爲1)或在您的要求(明確通過在session_start())是否與特定的會話ID已發送該請求。如果是這種情況,則重新創建之前保存的環境。

查看session hijacking查看另一個惡意用戶如何劫持另一個用戶的會話。