Как проверить старый пароль из базы данных перед обновлением нового пароля в Wordpress - PullRequest
2 голосов
/ 07 декабря 2011

Как я могу проверить старый пароль из базы данных перед обновлением нового в Wordpress.Переменная POST возвращает следующие данные из формы страниц обновления пароля.

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

Существует ли какая-либо функция по умолчанию, которая будет обрабатывать этот вопрос обновления пароля.Какой метод шифрования используется в WordPress для шифрования пароля?

Я все еще новичок в WordPress и не смог найти решение после поиска в Google этого требования.Пожалуйста, направьте меня к решению.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

У меня была похожая проблема, и я решил ее. Вот решение, за которым вы можете следовать, оно работает хорошо, и я уже использовал его для своего собственного проекта. Пожалуйста, дайте мне знать, если вы застряли с ним.

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';
    }
}
0 голосов
/ 01 марта 2018

тестовый и рабочий код

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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...