【问题标题】:How to verify old password from db before updating new password in Wordpress如何在更新 Wordpress 中的新密码之前从 db 验证旧密码
【发布时间】:2011-12-06 20:32:02
【问题描述】:

在更新 Wordpress 中的新密码之前,如何从数据库中验证旧密码。 POST 变量从更新密码页面表单中带来以下数据。

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

是否有任何默认功能可以处理此密码更新问题。 wordpress加密密码的加密方式是什么?

我还是 wordpress 的新手,在谷歌搜索此要求后找不到任何解决方案。请指导我解决。

【问题讨论】:

    标签: wordpress encryption passwords


    【解决方案1】:

    我遇到了类似的问题,我已经解决了,这是你可以遵循的解决方案,效果很好,我已经将它用于我自己的项目。如果你坚持下去,请告诉我。

    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';
        }
    }
    

    【讨论】:

    • 嗨,比较像 $passdata['new_password'] === $passdata['confirm_password'] 这样的两个密码不是更好吗?
    【解决方案2】:

    测试和工作代码

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

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 2023-03-31
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      相关资源
      最近更新 更多