Wordpress密码如何将用户密码与Wordpress用户表密码进行比较


Wordpress password how to compare user password to wordpress user table password?

自定义注册用户

wp_create_user(works)

    $username='balan';
    $user_pass ='balan';
    $user_email= 'random_email@email.com';
    $password = wp_hash_password( $user_pass );
    $user_id = wp_create_user( $user_name, $password, $user_email );

自定义登录用户

    $username='balan';
    $user = get_user_by( 'login', $username );
    $pass ='balan';
    $hash = wp_hash_password($pass);
    if (wp_check_password( $pass, $user->data->user_pass, $user->ID ) ) {
        echo "<br>Correct";
    } else {
        echo "<br>Wrong";
    }
    **WordPress login function** 
    $creds = array();
    $creds['user_login'] = 'balan';
    $creds['user_password'] ='balan';
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );

我在比较登录密码时出错。如何比较登录密码?wp_check_password()不工作。请帮我解决这个问题。

将已经散列的密码与其纯文本字符串进行比较,下面是示例。

<?php
$wp_hasher = new PasswordHash(8, TRUE);
$password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/';
$plain_password = 'test';
if($wp_hasher->CheckPassword($plain_password, $password_hashed)) {
    echo "YES, Matched";
} else {
    echo "No, Wrong Password";
}
?>

我想根据这里的文档,您需要使用$user->user_pass;而不是$user->data->user_passhttps://developer.wordpress.org/reference/functions/get_user_by/

我只是猜测,因为我不知道print_r($user);返回是什么

希望它能有所帮助!

wp_create_user调用内部使用wp_hash_passwordwp_insert_user

从本质上讲,你的代码最终会出现

 wp_hash_password(wp_hash_password('balan'));

wp_create_user应提供原始密码。