PHP для извлечения хэш пароля из базы данных
I am creating PHP stmt hash password updating script this script not updating password. every time display Your old password is incorrect message I want check fetch old password from database and new password should be updated I have lot of tried to do that's but not working
Что я уже пробовал:
Here is my code <?php include("database/config.php"); if($_SERVER['REQUEST_METHOD'] == "POST"){ $old_password = $_POST['old_password']; $new_password = $_POST['new_password']; $con_password = $_POST['con_password']; $stmt = $con->prepare('SELECT * FROM users WHERE user_id= ?'); $stmt->bind_param('s', $_POST['user_id']); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows >0){ $hash=$stmt->fetch(); $hash = password_hash($_POST['old_password'], PASSWORD_DEFAULT); if(password_verify($_POST['old_password'], $hash)){ if ($new_password == $con_password) { $stmt = $con->prepare("UPDATE users SET password = ? WHERE user_id = ?"); echo "Updated Sucessfully"; } else { echo "Your new Password is not match "; } } }else { echo "Your old password is incorrect"; } } ?>
This is my HTML form <form name="form1" method="post" action=""> <input name="old_password" type="password" id="old_password" value="" placeholder="Current Password" required> <input name="new_password" type="password" id="new_password" value="" placeholder="New Password" required> <input name="con_password" type="password" id="con_password" value="" placeholder="confirm new password" required> <input type="submit" name="changePass" value="change password" class="submit2" /> </form>
Richard MacCutchan
Я так не думаю $con->prepare
обновляет базу данных; для этого требуется выполнить команду. Вам также не хватает значений, необходимых для того, чтобы обновление действительно что-то делало. И, как и многие другие люди, Вы публикуете сообщение "успех", не проверяя, что ваше обновление действительно удалось.
Richard Deeming
$hash = password_hash($_POST['old_password'], PASSWORD_DEFAULT); if(password_verify($_POST['old_password'], $hash)){
функцию password_verify[^] принимает введенный пароль и сохраненный хэш текущего пароля.
Вы передаете введенный пароль и вычисленный хэш введенного пароля.
Вы спрашиваете, соответствует ли "старый пароль", который ввел пользователь, самому себе. Вы НЕ проверка соответствия текущему паролю пользователя.