2012-12-01 116 views
2

我正在做一個php頁面,允許用戶保持登錄狀態,我正在檢查用戶當前的IP與存儲在sql表中的一個。保持登錄功能php

我將用戶標識存儲在cookie中,而不是ip。

我應該做些什麼其他檢查?因爲我現在不認爲IP是足夠的。

+4

你絕對不應該匹配他們的IP爲用戶「保持」登錄 – Prash

+0

我建議你谷歌的簡單的PHP身份驗證教程... – sachleen

+0

@prash然後呢?說我不應該使用它是偉大的,但沒有建議? – NaughtySquid

回答

2

這取決於cookies以使用戶保持登錄您的應用程序或網站。用戶的IP可能會更改,因此不適用於獲取此功能。它只是寫入cookie,然後在登錄時讀取它。

+0

什麼是首選檢查而不是IP?用戶代理字符串可能? – NaughtySquid

+0

作爲一個想法,它應該是一個用戶屬性(如user_id或用戶名)的哈希值,並將其寫入cookie中。當用戶再次訪問該應用程序並且該應用程序需要登錄時,它將檢查並讀取該cookie,然後將該散列與用戶名的散列進行比較,如果它們相同,則將該用戶設置爲登錄。 – SaidbakR

0

您可能想要在會話中存儲用戶詳細信息。 Cookie相對不安全,可用於特權升級。

+0

我看過的每個主要的論壇應用都是通過cookies來完成的?他們錯了嗎? – NaughtySquid

0

散列會話cookie有助於保持用戶登錄。這是因爲cookie停留在用戶的計算機上,並允許其訪問會話數據。散列它增加了一層安全性。

用戶的IP地址不如cookie或會話變量好。首先,它可以改變(如智能手機從一個塔的範圍移動到另一個塔)。另一方面,它可以共享(如同一個無線路由器上的多個用戶一樣)。最後,IP地址可能被欺騙。

另一方面,會話只會持續到瀏覽器打開爲止(服務器端設置會話超時)。在這種情況下,會話將建立一個會話cookie,允許瀏覽器指向服務器上的會話數據。

會話數據安全得多,因爲在瀏覽器會話期間,一個會話cookie就是用戶計算機上的所有內容。這樣,您可以在服務器上存儲更敏感的數據(用戶名,個人身份信息或帳戶數據)。

訪問會話數據的唯一方法是通過該用戶的一個會話cookie,通常是一串很長的隨機字符。散列它使得解讀非常困難。