Les derniers mois, je fais un forum pour un projet d'école, mais je veux qu'un utilisateur puisse changer son propre mot de passe. Comment pouvez-vous mettre à jour un mot de passe avec PHP et PDO.
Je pensais que vous pouvez utiliser: p> mais il n'a pas ce que je voulais ... P> Et j'ai une forme mais je ne peux pas montrer que, parce que quelque chose s'est mal passé.
J'espère que vous pouvez m'aider. P> p>
3 Réponses :
Qu'est-ce que vous utilisez ici s'appelle un déclaration préparée de la cargaison et cela ne vous donne aucune protection contre Injections SQL. Un code correct serait
Tout ce que vous faites est d'écrire le nouveau mot de passe de la base de données après avoir la hausse bien sûr
$password = $_POST['password']; $confirm_password = $_POST['confirm_password']; if($password == $confirm_password){ $stmt = $conn->prepare("UPDATE password SET password = :pwd WHERE id=:id"); $stmt->execute([':pwd' => password_hash($password), ':id'=> $id]); } else { ..... }
J'ai trouvé la solution que j'ai manquée le mot de passe_default dans mon mot de passe hachage. Si j'ai fait quelque chose de mal laissé une réaction, j'apprendrais cela.
if(isset($_POST['update_password'])){ $id = $_SESSION['user_id']; $password = $_POST['password']; $confirm_password = $_POST['confirm_password']; if(strlen($password) >= 8){ if($password == $confirm_password){ $new_password = password_hash($password, PASSWORD_DEFAULT); $stmt = $conn->prepare("UPDATE forum_inhoud SET password = :new_password WHERE id=:id"); $stmt->execute([ ':new_password' => $new_password, ':id' => $id ]); $_SESSION['success'] = 'Wachtwoord is bijgewerkt!'; header('Location: ../../profile.php'); exit(0); } } else { $_SESSION['failed'] = 'Er is iets misgegaan!'; header('Location: ../../profile.php'); exit(0); } }
$ stmt = $ Conn-> préparer ("Mettre à jour le mot de passe de mot de passe '" .password_hash (mot de passe $). "' ''" où id = $ ID "); code> vous avez la syntaxe
Dans le code que vous avez posté, vous ne semblez que préparer une déclaration. Vous le sauve-vous réellement à la base de données aussi?