2014-04-07 123 views
1

對不起,這可能是一個初學者的問題。如果我使用$_SESSION變量,服務器如何跟蹤多個用戶/引用他們說約翰已登錄$_SESSION['username']="John"系統將如何引用彼得和詹姆斯誰也登錄,因爲你不能有$_SESSION['username']="Peter"$_SESSION['username']="James",因爲他們會寫彼此?會話如何跟蹤多個用戶

我可能在這裏錯過了一些簡單的東西。

+2

你可以看到會話爲每個用戶一個服務器端的文件(讓用戶可以有不同的數據)存儲在cookie是特定於用戶的文件名。這樣,每個用戶都可以獲得他們自己的會話,以及他們自己的會話變量。 –

+0

當您調用'session_start()'時,一個cookie(默認情況下稱爲PHPSESSID,除非您爲自定義cookie調用'session_name()')設置用戶瀏覽器的會話ID,該ID與服務器上的會話數據相關。 –

+0

感謝Joachim。它在現實生活中如此工作嗎?如果它確實需要在cookie中存儲什麼(我認爲儘可能少)。我想我需要一個例子。 – user2976086

回答

0

@ user2976086

$ _SESSION恰恰是什麼讓用戶除了對PHP服務器。每次調用session_start時,php服務器都會創建一個新的客戶端會話(如果尚未啓動),這通常會導致在您的瀏覽器中創建名爲PHPSESSID的Cookie。在服務器端,php服務器爲每個唯一會話ID(存儲在cookie中,每個瀏覽器只有一個)創建一個唯一的$ _SESSION數組。這就是爲什麼你只能在每個瀏覽器上用一個用戶登錄的原因(你可以使用firefox和chrome同時登錄2個賬戶到大多數站點,例如爲每個瀏覽器創建一個cookie)。這就是爲什麼你不能用不同的用戶「覆蓋」$ _SESSION ['username'],除非你在該瀏覽器窗口註銷,導致session_destroy被調用,或者刪除包含當前用戶的sessionid的cookie。

嘗試閱讀: http://www.php.net/manual/en/session.security.php

+0

謝謝Bartlomiej。所以PHP在後臺自動處理PHPSESSID和$ _SESSION數組。 – user2976086