更改哈希后,password_verify停止工作

时间:2017-10-28 19:10:07

标签: php

我正在努力实现用户编辑密码的功能。

我正在使用PASSWORD_BYCRYPT,并且在创建用户后,password_verify正常工作,但只要用户编辑了密码,它就会停止工作。

密码更改:

else if (isset($_POST["submitUpdateSettingsPW"])) {
    $passwordText = $_POST["passwordChangeInput"];
    $userID = $_SESSION["userID"];
    $passwordNew = password_hash($passwordText, PASSWORD_BCRYPT);
    $sql = "UPDATE users SET password = '$passwordNew' WHERE id = '$userID';";

    if (mysqli_query($conn, $sql)) {
      header("location: settings.php");
    }
    else {
      header("location: settings.php?message=Something+went+wrong.+You+may+not+have+the+permissions+to+do+this.");
    }
}

密码创建

else if (isset($_POST["submitSignup"])) {
$email = mysqli_real_escape_string($conn, $_POST["emailInput"]);
$passwordText = $_POST["passwordInput"];
$password = password_hash($passwordText, PASSWORD_BCRYPT);
$signupSQLCheck = "SELECT * FROM users WHERE email = '$email'";
$result = mysqli_query($conn, $signupSQLCheck);

if (mysqli_num_rows($result) == 0) {
    $signupSQL = "INSERT INTO users set email = '$email', password = '$password'";
    mysqli_query($conn, $signupSQL);
    header("location: login.php?message=Your+account+is+active.+You+may+now+login.");
}

else {
    header("location: login.php?message=This+email+is+already+registered.+Do+you+want+to+<a href = 'login.php'>login</a>?");
}

}

密码验证(在更改密码之前正常工作)

if (isset($_POST["submitLogin"])) {
$email = mysqli_real_escape_string($conn, $_POST["emailInput"]);
$passwordText = $_POST["passwordInput"];
$loginSQL = "SELECT * FROM users WHERE email = '$email' LIMIT 1";
$result = mysqli_query($conn, $loginSQL);

if (mysqli_num_rows($result) == 1) {
$row = mysqli_fetch_assoc($result);
$hash = $row["password"];

if (password_verify($passwordText, $hash)) {
  $_SESSION["user"] = 1;
    $_SESSION["userID"] = $row["id"];
    header("location: index.php");
}
}

else {
    header("location: login.php?message=Incorrect+email+or+password.+Do+you+want+to+<a href = 'signup.php'>sign up</a>?");
}

}

提前致谢

0 个答案:

没有答案