Changer Mot de passe

Résolu
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -  
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -
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>
A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   3
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   3
 
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