2013-01-17 172 views
0

從iphone應用程序登錄時,我調用一個php腳本登錄函數,它存儲用戶標識的會話。此Id是否存儲在服務器或iPhone上?

$_SESSION['IdUser'] = $result['result'][0]['IdUser']; 

我問其原因爲B/C會議顯然沒有當我退出模擬器並重新啓動它,所以我相信它被存儲在服務器上存儲。如果我希望多個用戶同時在我的應用程序中,或者在客戶端上會更好,我是否希望會話存儲在服務器上?服務器如何知道/從客戶端獲取會話ID?謝謝。

此外我希望我的用戶保持登錄狀態。顯然,

+0

服務器。從來沒有在客戶端。 – nickb

+0

閱讀[手冊](http://php.net/manual/en/intro.session.php)5秒鐘會回答這個問題。 – 2013-01-17 03:40:22

+0

但是服務器如何存儲多個會話ID,以及它如何知道當試圖訪問$ _Session的帖子或函數被調用時誰在點擊服務器? – TMan

回答

2

The PHP Documentation on Sessions是這個很清楚,但我會總結:

  1. $_SESSION被存儲在服務器上。它實際上是在具有會話名稱(通常)的臨時文件中。
  2. 服務器通過cookie識別用戶的會話

如果它很容易讓你有設備發送相應的會話cookie與每個請求(如將與網站發生),那麼服務器存儲是對你罰款。否則,您可能需要使用本地存儲。不用擔心多個用戶的會話互相覆蓋。

2

默認會話數據存儲在服務器上。在Linux中,通常位於目錄/ var/lib/php /中的文件中,但也可以存儲在數據庫或內存中。

cookie存儲在客戶端上,其中sesion id充當令牌來標識服務器端數據。在/ var/lib/php /中的會話數據示例中,存儲在客戶端Cookie中的會話標識映射到該目錄中的文件名。

1

在PHP的默認配置中,會話數據存儲在服務器上,標識符作爲cookie存儲在客戶端上。

此cookie是否在應用程序的會話中保留取決於調用腳本的代碼;您可以通過對同一個腳本進行幾次調用並查看會話是否保持「活動」來輕鬆測試。退出應用程序可能會或可能不會銷燬您使用過的任何cookie,但這正是會話的內容,即它們並不意味着持久。

如果您希望登錄持久性,您可以將登錄憑據存儲在電話本身(確保使用密鑰鏈),以便在服務器中斷時重新建立與服務器的會話。

0

該會話或$_SESSION[]變量存儲在服務器上。它與Cookie非常相似,只是它存儲在服務器上。

所以這樣概括起來講,

$_SESSION[] = (SERVER SIDE)

$_COOKIE[] = (CLIENT SIDE)