IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire de modification de mot de passe


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Janvier 2014
    Messages : 40
    Points : 26
    Points
    26
    Par défaut Formulaire de modification de mot de passe
    Bonjour à tous,


    J'ai mis en place un formulaire de modification de mot passe dans lequel les utilisateurs de mon site pourront modifier leur mdp qui aura été précédemment généré.
    Ne vous souciez pas du md5, je ne suis pas encore à cette étape, aucun de mes mdp sont cryptés.

    Mon formulaire et son traitement sont sur la même page.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="">
            <label>Mot de passe actuel : <input type="password" name="tb_mdpUtilisateur" ></label><br>
            <label>Nouveau mot de passe : <input type="password" name="tb_newMdp" ></label><br>
            <label>Verification mot de passe : <input type="password" name="tb_confirmMdp" ></label><br>
            <input type="submit" name="submit" value=" Envoyer ">
    </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
            $result=false;
            if(isset($_POST['submit'])){
            $mdpUtilisateur=$_POST['tb_mdpUtilisateur'];
            $nmdp=$_POST['tb_newMdp'];
            $vmdp=$_POST['tb_confirmMdp'];
            $NomAdherent=$_SESSION['login'];
                if (($mdpUtilisateur!='')&&($nmdp!='')&&($vmdp!='')) {
                    if ($mdpUtilisateur==$_SESSION['pass']){
                        if($nmdp==$vmdp){
                        $sql="UPDATE adherent SET mdpAdherent='$nmdp' WHERE NomAdherent='$NomAdherent'";
                        $result=mysql_query($sql);
                        echo 'Modification du mot de passe effectuee avec succes';
                        $_SESSION['pass']=$nmdp;
                        } else {
                            echo 'Erreur entre le nouveau mot de passe entr&eacute; et la verification';
                        }
                    } else {
                        echo 'Le mot de passe actuel n\'est pas valide';
                        }
                } else {
                    echo 'Veuillez remplir tous les champs';
                }
            }         
        ?>
    Quand je test dans ma bdd l'update, tout fonctionne. Donc je suppose que si mon mdp ne se met pas à jour dedans quand je passe par le formulaire c'est que j'ai dû cafouiller au niveau des récupération de données ?
    J'ai cette erreur :
    ( ! ) Notice: Undefined index: pass in C:\wamp\www\girv.com\util_modifMDP.php on line 41
    Le mot de passe actuel n'est pas valide
    La ligne 41 étant celle-ci: if ($mdpUtilisateur==$_SESSION['pass'])
    Quand un utilisateur se connecte voici une partie du formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="login" class="textBoxLogin" size="15" placeholder="Identifiant">';
    <input type="password" name="pass" class="textBoxMDP" size="15" placeholder="Mot de passe">';
    Et bien évidemment j'ai ouvert la session_start() sur la page...
    Est-ce qu'à la place de récupérer le mdp de la session je ne devrais pas plutôt faire un select de ma bdd ?

    Merci.
    Cordialement,
    lizeal

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    c'est un problème qui vient de l'accès à $_POST ou $_SESSION.
    Avant de les utiliser pour un traitement il faut vérifier que les variables existent bien avec isset().
    En théorie il faudrait également sécuriser ces variables avant des les envoyer en base de donnée. En utilisant des filtres par exemple.

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Démarre tu bien ta session avec

    en première ligne de ta page ?
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 314
    Points : 217
    Points
    217
    Par défaut
    la variable $_SESSION['pass'] n'est pas définie.

    d’après la logique de ton code , la variable $_SESSION['pass'] doit être bien définie et contient le mot de passe actuel de l'utilisateur après sa connexion.

    on peut pas modifier un mot de passe d'un User sans que ce dernier soit déjà connecté .

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Janvier 2014
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Oui je démarre bien ma session_start sur mes pages et en première ligne.
    Démarre tu bien ta session avec :
    en première ligne de ta page ?
    Pour chaque if je fais un isset ?
    Avant de les utiliser pour un traitement il faut vérifier que les variables existent bien avec isset().
    comme ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        <?php
            $result=false;
            if(isset($_POST['submit'])){
            $mdpUtilisateur=$_POST['tb_mdpUtilisateur'];
            $nmdp=$_POST['tb_newMdp'];
            $vmdp=$_POST['tb_confirmMdp'];
            $NomAdherent=$_SESSION['login'];
                if (isset($mdpUtilisateur!='') && isset($nmdp!='') && isset($vmdp!='')) {
                    if (isset($mdpUtilisateur) == isset($_SESSION['pass'])){
                        if(isset($nmdp==$vmdp)){
                        $sql="UPDATE adherent SET mdpAdherent='$nmdp' WHERE NomAdherent='$NomAdherent'";
                        $result=mysql_query($sql);
                        echo 'Modification du mot de passe effectuee avec succes';
                        $_SESSION['pass']=$nmdp;
                        } else {
                            echo 'Erreur entre le nouveau mot de passe entr&eacute; et la verification';
                        }
                    } else {
                        echo 'Le mot de passe actuel n\'est pas valide';
                        }
                } else {
                    echo 'Veuillez remplir tous les champs';
                }
            }         
        ?>
    Je pensais qu'en démarrant la session start, et puisque j'arrive à obtenir le login du connecté, que le mot de passe était lui aussi retenu. Comment récupérer le mot de passe ?
    la variable $_SESSION['pass'] n'est pas définie.

    d’après la logique de ton code , la variable $_SESSION['pass'] doit être bien définie et contient le mot de passe actuel de l'utilisateur après sa connexion.

    on peut pas modifier un mot de passe d'un User sans que ce dernier soit déjà connecté

  6. #6
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Je t'invite avant tout à regarder la documentation de la fonction isset qui est fonction fondamentale de php pour comprendre à quoi elle sert.

    N'hésite pas à user et abuser des fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var_dump($uneVariable);
    et
    print_r($maVariable);
    qui sont des fonctions de débuggage qui permettent de savoir ce que contiennent des variables. Tu sauras alors mieux où cela ne va pas, dans quel condition rentre le script ou non...
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/06/2007, 19h01
  2. Réponses: 2
    Dernier message: 02/02/2007, 14h53
  3. Formulaire pour recuperer son mot de passe
    Par Jean73 dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2006, 12h30
  4. Formulaire protégé par un mot de passe
    Par SpyesX dans le forum Access
    Réponses: 10
    Dernier message: 13/03/2006, 18h02
  5. [LDAP]modification du mot de passe - ligne de commande
    Par sangei dans le forum API standards et tierces
    Réponses: 24
    Dernier message: 01/12/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo