2014-09-28 28 views

回答

1

控制器仍然需要知道有關該用戶那些未加密的東西,如UID。

除此之外,執行密碼重置的一種方法是發送有關用戶的其他信息的單向散列。因此,舉例來說,有一個功能可以執行類似如下操作:

function generateLink($user) 
{ 
    $hash = md5($user->email); 
    $url = '/reset-password/$uid/$hash'; 
    return $url; 
} 

使用所需的任何散列函數,可能不推薦使用MD5。 接着,在另一端,這樣做:

function checkResetLink($uid, $hash) 
{ 
    $user = get_user($uid); // However you retrieve your user info 

    if($hash == md5($user->email)){ 
     // Log in the user or do whatever you want. 
    } 
} 

如果你真的希望它是隨機生成的,你可能會產生一些隨機哈希值,並存儲在用戶的記錄,那麼當你選擇了它,使用uid檢索該隨機哈希,並檢查它是否相同。

相關問題