无法在 WordPress 的自定义用户注册中使用手动散列密码登录 WordPress 管理员
Cannot login to WordPress admin with manually hashed password in custom user registration in WordPress
我在我的 WordPress 网站中创建了一个自定义注册页面供访问者注册。在这个页面上,我正在收集用户的密码并在它进行密码散列后保存它,$password_hash = wp_hash_password($password)
。但是当我尝试登录 wp-admin
时,它显示 密码不正确 。
这是我用来保存用户数据的代码片段:
function process_registration() {
$password = sanitize_text_field( $_POST['signup_password'] );
//Grabbing other values like firstname, lastname etc.
$password_hash = wp_hash_password( $password );
$user_data = array(
//other fields...
'user_pass' => $password_hash,
'role' => 'contributor',
);
$new_user_id = wp_insert_user( $user_data );
if( is_wp_error( $new_user_id ) ) {
//Do some stuff
} else {
// Do something else
}
}
但是,从 wp-admin
面板创建的用户可以正常登录。这不可能收集用户的密码并将其保存在自定义注册表单中,以后使用相同的密码进行登录吗?
我还是 WordPress 新手。
更新
在查看一些文章和话题后,我意识到即使是相同的文本生成散列字符串也总是不同的,这就是为什么它无法将散列密码与当前密码相匹配的原因。如果是这样,在 WordPress 管理员中创建的另一个用户如何能够登录?这是使用不同的方法吗?如果是,什么?但它不是,我缺少什么?
function process_registration() {
global $wpdb;
$password_converter=wp_hash_password('tara123451');
$user_insert_query=$wpdb->insert('wp_users', array(
'user_login' =>'username1',
'user_pass' =>$password_converter,
'user_email' =>'email_id@name.com',
));
$user_id = $wpdb->insert_id;
wp_update_user(array(
'ID' =>$user_id,
'role' => 'contributor'
));
}
我在我的 WordPress 网站中创建了一个自定义注册页面供访问者注册。在这个页面上,我正在收集用户的密码并在它进行密码散列后保存它,$password_hash = wp_hash_password($password)
。但是当我尝试登录 wp-admin
时,它显示 密码不正确 。
这是我用来保存用户数据的代码片段:
function process_registration() {
$password = sanitize_text_field( $_POST['signup_password'] );
//Grabbing other values like firstname, lastname etc.
$password_hash = wp_hash_password( $password );
$user_data = array(
//other fields...
'user_pass' => $password_hash,
'role' => 'contributor',
);
$new_user_id = wp_insert_user( $user_data );
if( is_wp_error( $new_user_id ) ) {
//Do some stuff
} else {
// Do something else
}
}
但是,从 wp-admin
面板创建的用户可以正常登录。这不可能收集用户的密码并将其保存在自定义注册表单中,以后使用相同的密码进行登录吗?
我还是 WordPress 新手。
更新
在查看一些文章和话题后,我意识到即使是相同的文本生成散列字符串也总是不同的,这就是为什么它无法将散列密码与当前密码相匹配的原因。如果是这样,在 WordPress 管理员中创建的另一个用户如何能够登录?这是使用不同的方法吗?如果是,什么?但它不是,我缺少什么?
function process_registration() {
global $wpdb;
$password_converter=wp_hash_password('tara123451');
$user_insert_query=$wpdb->insert('wp_users', array(
'user_login' =>'username1',
'user_pass' =>$password_converter,
'user_email' =>'email_id@name.com',
));
$user_id = $wpdb->insert_id;
wp_update_user(array(
'ID' =>$user_id,
'role' => 'contributor'
));
}