Hoe oud wachtwoord van db te verifiëren voordat u een nieuw wachtwoord bijwerkt in Wordpress

Hoe kan ik het oude wachtwoord uit de database verifiëren voordat ik het nieuwe in WordPress bijwerk. De POST-variabele brengt de volgende gegevens van het formulier formulier wachtwoordpagina bijwerken.

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

Is er een standaardfunctie die deze kwestie van de wachtwoordupdate afhandelt? Wat is de coderingsmethode die wordpress volgt om het wachtwoord te versleutelen?

Ik ben nog steeds onbekend met wordpress en kon geen enkele oplossing vinden na het googlen van deze vereiste. Verwijs me alstublieft naar een oplossing.

3

2 antwoord

Ik had hetzelfde probleem en ik heb het opgelost. Hier is de oplossing die je kunt volgen, het werkt goed en ik heb het al gebruikt voor mijn eigen project. Laat het me weten als je het volhoudt.

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
toegevoegd
Hallo, is het niet beter om twee wachtwoorden te vergelijken, zoals $ passdata ['new_password'] === $ passdata ['confirm_password']?
toegevoegd de auteur stviper, de bron
Bedankt voor het snelle antwoord
toegevoegd de auteur Samir Bhattacharjee, de bron

test- en werkcode

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";
1
toegevoegd