Changer Mot de passe

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 26 nov. 2014 à 05:30
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 26 nov. 2014 à 16:29
Bonjour,
J'ai mis en place une méthode pour que les utilisateurs puissent modifier leurs mot de passe.
Bien entendu ça ne fonctionne pas, alors je voudrais savoir si quelqu'un pourrait me donner un coup de main s'ils vous plait, ça serai très sympa de votre part.
En vous remerciant

Ma méthode "NewPass"
	public static function NewPass($id_adherent, $passActuel, $newPassUn, $newPassDe) {
		if(!empty($passActuel) AND !empty($newPassUn) AND !empty($newPassDe)) {
			if($newPassUn === $newPassDe) {
                $req = self::$db->prepare('SELECT * FROM tb_adherent WHERE id_adherent = :id_adherent');
				$req->bindParam(':id_adherent', $id_adherent, PDO::PARAM_INT);
				$req->execute();
				$donnees = $req -> fetch(PDO::FETCH_ASSOC);

				if($donnees['password'] === Security::hash($passActuel)) {
					$newPass = Security::hash($newPassUn);
                    $req = self::$db->prepare('UPDATE tb_adherent SET password = :newPass WHERE id_adherent = :id_adherent');
                    $req -> bindParam(':newPass', $newPass);
                    $req->bindParam(':id_adherent', $id_adherent, PDO::PARAM_INT);

					if($req -> execute()) {
						$resultat = 'Votre mot de passe a été changé avec succés.';
					} else {
						$resultat = '<span class="error-info">Une erreur est survenue pendant la mise à jour de votre mot de passe.</span>';
					}
				} else {
					$resultat = '<span class="error-info">Vous n\'avez pas saisi correctement votre mot de passe actuel,<br />veuillez recommencer.</span>';
				}
			} else {
				$resultat = '<span class="error-info">Les champs "Votre nouveau mot de passe" et "Confirmer Nouveau Mot de passe" doivent être identiques,<br />veuillez recommencer.</span>';
			}
		} else {
			$resultat = '<span class="error-info">Pour changer de mot de passe vous devez remplir tout les champs,<br />veuillez recommencer.</span>';
		}
        return $resultat;
	}

Mon formulaire qui devrait faire appel à la méthode NewPass de la class User
<?php
if(!empty($_POST['changerPass'])) {
	extract($_POST);
	echo '<div style="text-align:center;">'.User::NewPass($_SESSION['id_adherent'], $passActuel, $newPassUn, $newPassDe).'</div>';
}
?>

<br/>

	<div class="perduMDP">
        <form  action="" methode="post">
            <fieldset>
                <legend class="legend">Changer mon Mot de Passe</legend>
                    <p>Mot de passe actuel :<br/>
                    <input type="text" name="passActuel" value="">
                    </p>

                    <p>Nouveau Mot de passe :<br/>
                    <input type="text" name="newPassUn" value="">
                    </p>

                    <p>Confirmer Nouveau Mot de passe :<br/>
                    <input type="text" name="newPassDe" value="">
                    </p>
<br/>    	        <p>
                    <input type="submit" name="changerPass" value="Envoyer">
                    </p>
            </fieldset>
        </form>
	</div>

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
26 nov. 2014 à 12:52
Bonjour,

TU nous dis... <<ça ne marche pas>> .. ok .. mais encore ??
Qu'obtiens tu ?
As tu un message (retour de ta fonction) qui te dit sur quoi ça bloque ?
As tu testé ta requête en directe dans la BDD ?
Si tu n'a aucun retour venant de ta fonction.. as tu vérifié si au moins tes variables POST étaient correctement créées ? ( fais un print_r($_POST) avant ton IF )
Je me demande s'il ne te manquerait pas non plus un ECHO devant l'appel à ta fonction...

//le temps des tests ..
print_r($_POST);


if(isset($_POST['changerPass']) && !empty($_POST['changerPass'])) {
	extract($_POST);
         $resultat = User::NewPass($_SESSION['id_adherent'], $passActuel, $newPassUn, $newPassDe);
	echo '<div style="text-align:center;">'.$resultat.'</div>';
}else{
  echo "changerPass est vide ou n'existe pas !";
}
1
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
26 nov. 2014 à 14:45
Bonjour
En fait lorsque j'envoie mon formulaire aucune erreur retournée, par contre l'URL affiche toutes les variables.
Merci pour ton aide

index.php?passActuel=&newPassUn=&newPassDe=&changerPass=Envoyer
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
26 nov. 2014 à 15:40
Dans le code que tu nous as donné juste au dessus.. tu as mis un FORM .. dans lequel tu utilises la méthode POST ( donc l'URL ici n'a pas d'intérêt !! )

As tu testé mon code ?
Qu'est-ce qu'il t'affiche ????
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 nov. 2014 à 15:42
Bonjour,

Erreur bête :)
<form  action="" methode="post">

« method » sans « e » !
Donc par défaut il envoie du GET, donc tes variables POST ne sont pas remplies.
Ce qui explique, 1) que ça ne marche pas, 2) que tu voies tout dans l'URL.

Xavier
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
26 nov. 2014 à 16:29
Bonjour

Je l'ai relu je ne sais combien de fois c'est fou tout cela pour un e que je n'avais pas vue j'aurais pu rester bloquer longtemps.
Un grand merci.
0