Комментируя, я обнаружил, что последняя строка в этом коде, которая не закомментирована
$query->bindParam(':password', $password);
- это строка, в которой код перестает работать, и все, что я получаю, это
Эта страница не работает .... в настоящее время не может обработать этот запрос.HTTP ERROR 500 "
Однако я понятия не имею, что не так с использованием bindParam()
.
Позже я добавил это:
$query = $conn->prepare('UPDATE users SET user_password = ? WHERE user_email = ?');
$query->execute(array($password, $email));
echo "Your password has been successfully reset.";
Iснова изменили код и теперь он работает, теперь весь код выглядит так:
// Was the form submitted?
if (isset($_POST["ResetPasswordForm"])) {
// Gather the post data
include_once 'includes/database.inc.php';
$email = $_POST['email'];
$password = $_POST['password'];
$confirmpassword = $_POST['confirmpassword'];
$hash = $_POST["q"];
// Use the same salt from the forgot_password.php file
$salt = "498#2D83B631%3800EBD!801600D*7E3CC13";
// Generate the reset key
$resetkey = hash('sha512', $salt.$email);
// Does the new reset key match the old one?
if ($resetkey == $hash) {
if ($password == $confirmpassword) {
// has and secure the password
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Update the user's password
$sqlUpdate = "UPDATE users SET user_password = ? WHERE user_email = ?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sqlUpdate)) {
echo "SQL Failed";
exit();
} else {
mysqli_stmt_bind_param($stmt, "ss", $hashedPassword, $email);
mysqli_stmt_execute($stmt);
echo "Your password has been successfully reset2.";
exit();
} else {
echo "Your password reset key is invalid.";
exit();
}
}
?>