2011-12-06 63 views
2

如何在更新Wordpress中的新密碼之前驗證數據庫中的舊密碼。 POST變量從更新密碼頁面窗體中獲取以下數據。如何在Wordpress中更新新密碼之前驗證舊密碼

Array 
(
    [old_password] => oldpass 
    [new_password] => newpass 
    [confirm_password] => newpass 
) 

是否有任何默認函數會處理這個密碼更新問題。 wordpress加密密碼的方法是什麼?

我對wordpress還是個新手,並且在Google上搜索這個需求之後找不到任何解決方案。請指導我解決問題。

回答

2

我有類似的問題,我已經解決了,這是您可以遵循的解決方案,它工作良好,我已經將它用於我自己的項目。請讓我知道,如果你堅持下去。

if($_POST['submitpassword']) 
{ 
    $passdata = $_POST; 
    unset($_POST,$passdata['submitpassword']); 

    $user = wp_get_current_user(); //trace($user); 
    $x = wp_check_password($passdata['old_password'], $user->user_pass, $user->data->ID); 

    if($x) 
    { 
     if(!empty($passdata['new_password']) && !empty($passdata['confirm_password'])) 
     { 
      if($passdata['new_password'] == $passdata['confirm_password']) 
      { 
       $udata['ID'] = $user->data->ID; 
       $udata['user_pass'] = $passdata['new_password']; 
       $uid = wp_update_user($udata); 
       if($uid) 
       { 
        $passupdatemsg = "The password has been updated successfully"; 
        $passupdatetype = 'successed'; 
        unset($passdata); 
       } else { 
        $passupdatemsg = "Sorry! Failed to update your account details."; 
        $passupdatetype = 'errored'; 
       } 
      } 
      else 
      { 
       $passupdatemsg = "Confirm password doesn't match with new password"; 
       $passupdatetype = 'errored'; 
      } 
     } 
     else 
     { 
      $passupdatemsg = "Please enter new password and confirm password"; 
      $passupdatetype = 'errored'; 
     } 
    } 
    else 
    { 
     $passupdatemsg = "Old Password doesn't match the existing password"; 
     $passupdatetype = 'errored'; 
    } 
} 
+2

感謝您的快速到點答案 –

+0

嗨,那不是更好地對比兩個密碼一樣$ passdata [ 'NEW_PASSWORD'] === $ passdata ['確認密碼'] ? – stviper

0

測試和工作代碼

global $current_user; 
get_currentuserinfo(); 
$username = $current_user->user_nicename; 

$username = $username; 
$oldpass = $_POST['cpassword']; 
$user = get_user_by('login', $username); 

if ($user && wp_check_password($oldpass, $user->data->user_pass, $user->ID)) 
echo "That's it"; 
else 
echo "Nope";