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

标签 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));

但它仍然返回 false。

让我知道,如果我的代码在比较密码时有任何错误,或者这样做的技术是错误的。

谢谢

最佳答案

您必须在 wp_create_user 中使用纯密码,而不是哈希。

关于php - 在 WordPress 中比较密码总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697089/

相关文章:

php - 有没有办法将各种 MYSQL 查询与多个 WHERE 子句结合起来?

PHP 写为 ANSI 而不是 UTF-8

mysql - sinatra +Datamapper + mysql

php - 3 字段求和但仅当有值时

php - 如何在woocommerce <ul class ="products"/>标签中为单个产品添加一个div

php - 通过php表单修改我的xml文件

php - SEO 优化-动态文件的 PHP 项目

php - 在 mysql 中使用 join 更新表

javascript - 在每个页面加载时包括 twitter/flickr api 调用 (WordPress)

css - 如何在 flexslider 中更改事件缩略图的样式