2010-07-04 104 views
3

我試圖找出如果這是更好地保存我的用戶的數據在一個會話cookie(如密碼,用戶名等),並更新只有當我從我的PHP改變MYSQL數據庫的cookie,如何設置我的登錄系統?

將用戶的用戶名和用戶ID存儲在會話cookie中,並在每次需要獲取用戶數據時將其連接到MYSQL數據庫。

哪一個是更好的方法..?我從來沒有實際設置登錄系統,所以任何建議將不勝感激。

回答

2

會話和cookie不一樣。會話只是將其會話ID存儲在cookie(客戶端)以及服務器上的所有會話數據中。我認爲你真的指的是你使用「cookie」這個詞的地方。

繼續前進以回答您的實際問題,將大部分用戶詳細信息存儲在會話中是絕對安全的。儘管您不需要將密碼存儲在會話中,因爲您僅將它用於身份驗證。除此之外,最理想的方法是在會話中緩存常用用戶數據(您可能會在每個頁面上顯示的內容),以保存到DB的旅程。

克里斯提到的對用戶數據的更改幾乎是不存在的,因爲除了用戶自己以外,用戶數據不會被任何人修改,在這種情況下,您可以更新會話以及數據庫。

+0

+1以進入我所做的更多細節。 – 2010-07-04 02:24:39

1

好問題。我已將用戶數據保存在PHP會話中。因爲這是所有的服務器端,所以這樣做應該是安全的,並且避免額外的數據庫查找。

不利之處在於,您不會自動提取在該會話期間發生的數據庫更改......但用戶數據通常不會如此動態以致我不在意。

+0

有關更新數據的任何提示...? – mattsven 2010-07-04 01:43:41

1

您不應該在cookie中存儲密碼。我會將詳細信息存儲在數據庫中,並使用memcached來減少數據庫的負載。

+0

我猜他的意思是會話變量,而不是會話cookie。存儲在會話「cookie」中的唯一東西是用於將客戶端綁定到特定會話的會話ID。所有其他會話數據都存儲在服務器端。 – 2010-07-04 02:08:15

+0

@Lèsemajesté可能,我想避免任何混淆,因爲他的第一個選項指定了「會話cookie」。所以,我提供了一般情況。我會避免使用會話,以避免盯着/恢復會話的開銷,以及 - 更重要的是 - 避免必須記住在需要此數據的情況下恢復會話。另外,我確實認爲memcached爲緩存數據提供了更多選項。它肯定爲羣集Web服務器提供了一個更好的解決方案,您必須將會話數據存儲在中央數據庫中,以便將數據提供給所有服務器。 – 2010-07-04 02:24:06

+0

memcached對於大型應用程序來說是一個很好的解決方案,但是對於OP正在嘗試做什麼來說,這將是矯枉過正,特別是因爲他提到這是他第一次構建這樣的系統。 – casablanca 2010-07-04 02:38:13