在WordPress中比较密码总是返回false

时间:2016-06-08 08:26:53

标签: php mysql wordpress

我想通过编码在WordPress中插入新用户,然后比较用户名和& 密码。我尝试以两种方式插入用户名和密码。

1

插入新用户代码(表格 - wp_users)

$email = $_POST['txtEmail'];
$userName = $_POST['txtUserName'];//Sahil
$password = $_POST['txtPassword'];//1212
$hash_value = password_hash($password, PASSWORD_BCRYPT);
$user_id = wp_create_user( $userName, $hash_value, $email);

2

尝试以其他方式插入密码

$settings = array('cost' => 10, 'salt' => 'rSq.2M7Ikc.QPhVtYlp1Nu');
$hash_value = password_hash($password, PASSWORD_BCRYPT, $settings);
$user_id = wp_create_user( $userName, $hash_value, $email);

我没有添加代码来检查用户名&电子邮件存在于表中。上面的代码工作正常,并且在wp_users表中添加了新用户,并且密码以散列格式存储。防爆。 $ P $ BgynwP / kZuQu5p / SAU / dTMA19sbJs3 /

我尝试用两个函数比较它,但它总是返回false。

1

$userName = $_POST['txtUserName'];//Sahil
$password = $_POST['txtPassword'];//1212

$user = get_user_by( 'login', $userName );
$result = wp_check_password( $password, $user->user_pass, $user->ID);
if($result){
        echo 'Correct';
    }else{
        echo 'Wrong'; //Always return wrong
    }

2

$userName = $_POST['txtUserName'];//Sahil
$password = $_POST['txtPassword'];//1212
$user = get_user_by( 'login', $userName );
$isPasswordCorrect = password_verify($password, $user->user_pass);
if($isPasswordCorrect){
        echo 'Correct';
    }else{
        echo 'Wrong'; //Always return wrong.
    }

也尝试了 -

var_dump(password_verify($password, $user->user_pass));

但它仍然是假的。

让我知道,如果在比较密码或技术时我的代码中有任何错误,则执行此操作是错误的。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用wp_authenticate_username_password()

验证用户,确认用户名和密码有效

$email = $_POST['txtEmail'];
$userName = $_POST['txtUserName'];//Sahil
$password = $_POST['txtPassword'];//1212
$check = wp_authenticate_username_password( NULL, $userName , $password );

然后您可以使用

简单地检查结果
if(is_wp_error( $check ))
{
  echo 'Wrong'; 
}
else
{
  echo 'Correct';
}

在WordPress wp_create_user()中创建用户 密码自动保存到数据库无需转换password_hash

wp_create_user( "Sahil", "1212", "Sahil@gmail.com" );

答案 1 :(得分:0)

您必须使用wp_create_user中的普通密码,而不是哈希。