mysqli — невозможно войти в систему после сброса пароля с помощью sha512

Я создаю простой сценарий входа в систему, и я могу зарегистрироваться и войти без проблем. Однако сейчас я пытаюсь добавить функцию «Забыли пароль» и не могу понять, почему она не работает.

Я могу обновить пароль в таблице mysql, используя тот же sha512 и метод посола, который я использую в своем сценарии регистрации, но после его обновления я больше не могу войти в систему.

Функция входа в систему, которая запускается, когда пользователь пытается войти, выглядит следующим образом:

if ($stmt = $mysqli->prepare("SELECT userID, firstName, pWord, salt FROM users WHERE email = ? AND conf = 1 LIMIT 1")) {
$stmt->bind_param('s', $email);  // Bind "$email" to parameter.
$stmt->execute();    // Execute the prepared query.
$stmt->store_result();
// get variables from result.
$stmt->bind_result($user_id, $firstName, $db_password, $salt);
$stmt->fetch();

// hash the password with the unique salt.
$password = hash('sha512', $password . $salt);
if ($stmt->num_rows == 1) {
// Check if the password in the database matches
// the password the user submitted.
if ($db_password == $password) {
... // Log user in
}
}
}

Парольная часть моего сценария регистрации:

$random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));

// Create salted password
$password = hash('sha512', $password . $random_salt);

// Insert the new user into the database
if ($insert_stmt = $mysqli->prepare("INSERT INTO users (firstName, lastName, email, pWord, salt, accConf, conf) VALUES (?, ?, ?, ?, ?, ?, 0)")) {

$insert_stmt->bind_param('ssssss', $firstName, $lastName, $email, $password, $random_salt, $confirmation);
$insert_stmt->execute();
... // Do something }

Часть пароля моего скрипта сброса:

$random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));

// Create salted password
$password = hash('sha512', $password . $random_salt);

// Update the user's password
if ($update = $mysqli->prepare('UPDATE users SET pWord = ?, salt = ? WHERE email = ?')) {

$update->bind_param('sss', $password, $random_salt, $email);
$update->execute();
... //Do something }

Я вижу, что в базе данных пароль является обновление, но когда я пытаюсь войти в систему с новым паролем, появляется сообщение об ошибке «Неправильные данные для входа в систему».

Есть ли причина, по которой мои пароли не будут работать после обновления?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]