2011-09-02 48 views
-1

當用戶忘記了密碼後,改變了他的密碼,則發送給他的電子郵件帳戶鏈接和令牌(唯一),以resetpassword.php電子郵件幫助如何讓用戶認證

當認證是正確的,那麼他可以更改密碼。我的問題是如何發生這種情況? 快速簡單的方法是給他發送一個新密碼並讓他通過他的CP進行更改,但是這是一個很好的用戶體驗嗎?

$result = mysql_query("SELECT member_id FROM members WHERE forgotpass='$token'"); 
     if(mysql_num_rows($result) == 1) { 

      WHAT GOES HERE? 
    } 
    else { 
     die("Query failed"); 
    } 
+1

通常你會使用令牌的有效性來顯示一個表單,讓用戶輸入一個新的PW,然後更新他們的記錄。強迫他們填寫新密碼並且只有在令牌中告訴他們是無效的用戶不友好。 –

+0

@馬克乙:這是真的,但這不像你說的那樣工作。起初它檢查令牌驗證,然後有'什麼在這裏?' – EnexoOnoma

+0

然後它會'包括('newpasswordform.php')'顯示錶單。將該表單嵌入到隱藏字段中,以便在提交新密碼時進行雙重檢查。 –

回答

2

這是什麼?

應該有類似

echo 'Your password was mailed to you'; 
mysql_query("UPDATE members SET password = '".$random_hashed_string."' WHERE forgotpass='$token'"); 
mail($to, $subject, $message." password:".$random_hashed_string, "From: [email protected]"); 
+0

是我更新的問題的答案......是否通過電子郵件發送新生成的密碼並讓他通過他的控制面板進行更改具有良好的用戶體驗? – EnexoOnoma

+0

@尼古拉:是的 – genesis

2

您將需要創建一個表單,允許用戶選擇一個新的密碼。表單的動作將更新數據庫用戶記錄的密碼字段。這可能是一個單獨的過程,但您的WHAT GOES HERE?將是一個HTML表單。