2013-05-09 36 views
0

我在我的網站有一個用戶登錄系統,我有一個困惑。目前我在用戶登錄系統中沒有「記住我」複選框。目前我正在使用這種方式來登錄用戶。我應該使用SESSION和COOKIE還是Just COOKIE?

$_SESSION['user_id'] = $_POST['user_id']; 
$_SESSION['user_name'] =$_POST['user_name']; 

但現在,我想把一個'記住我'複選框,爲此我需要使用COOKIE。我想知道應該用什麼procdure

If user checks the 'Remember Me' Checkbox I need to use COOKIE. 
But If user does not check the 'Remember Me' Checkbox should I use SESSION? or COOKIE? 
+0

是否要將設置保存在客戶端或服務器上?如果前者使用cookie。如果後者使用會話。 – 2013-05-09 10:58:15

+0

Cookie在這裏(記住我的功能)持有會話ID之類的東西。所以你需要兩個。不要在cookie中存儲任何明智的東西。我強烈建議你使用一個框架進行認證,很難做到這一點。如果你問這樣的問題,我認爲你沒有把握好。 – mpm 2013-05-09 11:00:49

回答

2

不要將密碼存儲在cookie中。創建一個新的隨機值,充當用戶名和密碼的組合,並將其存儲在cookie和用戶數據庫中。

這個隨機值的要求:它必須是唯一的(如用戶名/密碼組合),它必須是密碼隨機的,而不是「散列當前時間」僞隨機。或者rand()。或者mt_rand()

請求會嘗試繼續會話。如果不成功,請首先檢查請求是否存在Remember-me Cookie。這將觸發數據庫中的查找,並且可能找到用戶。此用戶必須在此會話中登錄。

否則,請輸入用戶名和密碼。

0

與餅乾,你都可以做,但DATAS將保持在客戶端,所以你需要隱窩DATAS。

與會話作爲用戶登錄,你只能不斷DATAS長。

所以答案是COOKIES

0

對於需要餅乾反正因爲會話ID存儲在cookie的會話。

對於「記住我」功能,您可以擴展會話Cookie生存期(默認0 - 在瀏覽器會話結束時過期)。因此,當用戶登錄時,如果勾選了「記住我」,將會話cookie設置爲過期時間(例如1周),如果「記住我」未被選中,則將會話cookie設置爲0(在瀏覽器末尾會話)。

0

您需要在某處存儲SESSION ID。這可以是cookie或GET參數粘貼到每個GET請求。通常,在撥打session_start()時會自動使用Cookie。

0

使用$ _SESSION

會話保持它的數據,如在服務器上的用戶名和密碼,給用戶在它的會話ID,它告訴這組數據的服務器的cookie屬於哪個瀏覽器,它被稱爲會話cookie(還有其他的方法來存儲會話ID,但這是超出範圍)。只要會話cookie保留在瀏覽器緩存中並且有效(不過期),它們仍將保持登錄狀態。

「保持登錄狀態」功能可以通過延長會話cookie的到期時間來實現。這可能是您最安全的選擇。但是如果你想深入瞭解會話劫持,你會想要閱讀。

採取這裏偷看:http://php.net/manual/en/function.session-set-cookie-params.php

特別是:

session.cookie_lifetime 

因爲它提到它的默認值爲0,這是直到瀏覽器被關閉。使其成爲一個合理的秒數,86400爲1天(除非我累了數學),你會保持他們登錄的一天,除非瀏覽器緩存被清除(關閉瀏覽器是常見的,但你不能做任何事情)。我認爲向上值是有符號整數的最大值,因此:2,147,483,647/86,400 = 24,855(ish)天。如果你需要它,那麼很多。

相關問題