Я создал пользовательскую страницу регистрации на своем сайте 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, может войти в систему? Это использует другой подход? Если да, то что? Но это не то, что я упускаю?
sanitize_text_field()
обычно может быть проблемой, когда вы имеете дело сpassword_hash()
, вы не используете какой-либо другой механизм экранирования/механизм очистки - person Masivuye Cokile   schedule 29.11.2017123'\$#--<br>
, считаются допустимыми. - person Funk Forty Niner   schedule 29.11.2017