2012-12-15 136 views
0

可能重複:
PHP session or cookiePHP會話VS PHP的cookie

我們正在開發我們要保持關於從頁面用戶頁面跟蹤的一些信息,一個新的項目,在安全性,可靠性和服務器使用條款是否最好在會話或cookie中進行?使用這種或那種方法有什麼起伏。

例如跟蹤用戶是否成功登錄或跟蹤用戶選擇的語言。

基本上我們想知道如何決定我們是否應該使用cookie或會話,顯然如果我們想要跟蹤不同訪問頁面的數據在不同的場合甚至不同日子裏出現的答案是使用cookie,但是如何在不關閉瀏覽器的情況下在頁面導航中保持跟蹤。

由於

+0

試試這個http://stackoverflow.com/questions/11151597/php-session-or-cookie – Sibu

回答

6

餅乾是一個小的文字組成,是由服務器在HTTP響應報頭髮送到客戶端。客戶端將在本地存儲它,並在請求標頭中的每個請求中將其返回給服務器。這允許在其他無狀態HTTP協議中實現一些狀態

A 會話是一個典型的實現概念上的曲奇。服務器向客戶端發送無意義的唯一會話令牌(隨機ID)作爲cookie,客戶端會在每次請求時返回該令牌。服務器端的這個ID與一些​​數據相關聯。每次客戶端在請求中將其會話令牌發送回服務器時,服務器都會查找與該令牌關聯的數據。

通過將會話ID嵌入到所有URL或表單請求中,也可以在客戶端和服務器之間來回傳輸會話ID,但不一定是Cookie。但是,將URL嵌入到URL中是一個壞主意,因爲如果URL在不同用戶之間共享(參見下文),那麼允許意外的會話傳輸。這幾天的會話通常是使用Cookie客戶端來實現的。

從概念上說,cookie和會話非常相似,它們都在HTTP中實現狀態。區別在於cookie只能存儲少量數據,這些數據在每個請求中來回傳輸,並且可由用戶編輯(因爲它是存儲在客戶端的信息);而會話存儲服務器端的所有數據,因此僅受服務器資源的限制。唯一的漏洞會話是,如果用戶可以猜測或竊取另一個用戶的會話ID,他可以冒充該用戶。這就是所謂的session hijacking。簡單的餅乾沒有任何安全性,不應該用於任何重要的事情(例如,用戶可以查看和編輯內容,因此將userloggedin=yes存儲在cookie中是您可以做的最糟糕的事情)。

+0

+1,但至於你的最後一句話:會話ID cookie * *非常重要,它仍然被使用;)也許你應該改說它說客戶可以看到這些數據並篡改它,這意味着什麼... – phant0m

+0

夠公平的,試圖澄清一點。 :) – deceze