簡體   English   中英

用PHP Cookie重新初始化用戶登錄的最佳方法

[英]Best way to re-initialize user login with PHP Cookie

我已經建立了一個半基本的用戶系統,該系統使用會話來檢查用戶是否已登錄。現在,我想創建一個“記住我”復選框來創建一個cookie,該cookie將在一年或2年內刪除其自身。已經創建了該部分,但是使用該Cookie保持用戶登錄的最佳方法是什么?

我知道會話最終會消失,因此阻止這種情況發生的最佳方法是什么?我只將用戶名存儲在Cookie中,而沒有密碼。 另外,什么是阻止人們編輯Cookie來“欺騙”系統以使其認為自己的帳戶的好方法?目前,這是我檢查用戶是否已登錄的功能:

public function isloggedin()
{
    if (isset($_SESSION['user']))
    {
        return true;
    } else
    {
        return false;
    }
}

這就是我生成Cookie的方式:

setcookie("XE_RememberMe", $username, time()+ 10 * 365 * 24 * 60 * 60,'/');

另外,cookie的一些好的做法是什么?

用戶登錄后,創建唯一的會話ID,並將此ID推送到表sessions_id (相對於users表),並將相同的ID推送到Cookie。 此外,將cookie id與表sessions_id進行比較。

如果將用戶名存儲在cookie中是登錄用戶的唯一條件,那么任何人都可以創建或更新cookie以以任意用戶身份登錄。

您需要的是隨機數: http : //en.wikipedia.org/wiki/Cryptographic_nonce

當用戶登錄時,生成一個隨機數並將其存儲在Cookie(以及用戶名)和用戶數據庫中。

Cookie的“登錄”過程如下:

  1. 從Cookie收集用戶名和隨機數。
  2. 查看是否存在具有該用戶名和隨機數的用戶。
  3. 如果用戶存在,請記錄他們
  4. 生成一個新的隨機數並將其存儲在數據庫中並更新其cookie。

隨機數對於每個用戶都應該唯一,並且只能使用一次。

生成隨機數非常容易,它只需要是一個無法預測的隨機字符串即可。 您可以將uniqid()或hash()與隨機輸入一起使用。

http://php.net/manual/en/function.hash.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM