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

PHP & Base de données Discussion :

problème d'authtification en php


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Par défaut problème d'authtification en php
    salut à tous,
    mon niveau en php n'est pas trop avancé,
    et j'ai un souci pour faire une authentification
    avec mot de passe et login.
    le mot de passe enregistré dans la base est crypté avec md5
    et le code de la vérification d'authentification est le suivant:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
    // Definition des constantes et variables
      $mdp = $_POST['mdp'];
       if (empty($_POST['user']))
    {
    die ("ERREUR: Entrez un nom d'utilisateur!");
    }
    // on vérifie que le pass n'est pas vide !!
    elseif (empty($_POST['mdp']))
    {
    die ("ERREUR: Veuillez entrer un mot de passe!");
    }
       //Connection à mysql et sélection de la base de données
     $connection = mysql_connect("localhost", "root", "") or die(mysql_error());
     mysql_select_db("site", $connection) or die(mysql_error());
     
      //Préparation de la requête
     $query = ("SELECT nom, mdp FROM inscription
                WHERE mdp='".md5($mdp)."'
    			AND nom='".$_POST['mdp']."'")
    			or die(mysql_error());
     
     //exécution de la requête et récupération du nombre de résultats
      $result = mysql_query($query) 
              or die ("Erreur: $query. " . mysql_error());
      $data = (mysql_fetch_array($result) );
     
    // Regarde les valeurs retournees par la base
     
      if (!md5($mdp) == $data['mdp'])
      { 
         echo "vérifier votre mot de passe";
      }
       else 
       {
          session_name();
          session_start();
          session_register("nom");
         //session_encode(); 
         $url="Location: etat.php?PHPSESSID=".$PHPSESSID;
          header($url);
       }
    ?>
    en test (formulaire html), toujours il me demande la vérification du mot de passe même s'il est correct.
    s'il vous plait comment corriger ça?

    désolé pour la longueur de mon message et merci d'avance ))

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    tu as inversé tes variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (...) AND nom='".$_POST['mdp']."'")
    devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (...) AND nom='".$_POST['user']."'")
    N'oublie pas au passage qu'il ne faut jamais mettre des valeurs transmises par l'utilisateur dans une requete sql, mais protéger avec des fonctions adaptées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (...) AND nom='".mysql_real_escape_string($_POST['user'])."'")

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Par défaut
    merci pour ces information mais le problème persiste,
    malgré que j'ai effectué plusieurs modifications
    je sais pas quoi modifier

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    session_name();
          session_start();
          session_register("nom");
         //session_encode(); 
         $url="Location: etat.php?PHPSESSID=".$PHPSESSID;
          header($url);
    1. le session_start() doit être en haut de ton code, pour être sur que ta session est toujours démarrée (et éviter des erreurs)
    2. c'est quoi ta variable $PHPSESSID ??
    3. PHP gère tout seul les identifiants de session, inutile/nuisible de les préciser comme tu le fais en passant un paramètre PHPSESSID
    4. on peut voir ta page etat.php (au moins comment tu gère la session et la redirection) ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Par défaut
    1) etat.php: juste pour essayer l'authentification ça marche ou non
    mais pas encore codé
    2) je ne comprends pas beaucoup comment manipuler les sessions

  6. #6
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Tu pourrais nous donner le résultat de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    (...)
    $result = mysql_query($query) 
              or die ("Erreur: $query. " . mysql_error());
    $data = (mysql_fetch_array($result) );
     
     
    echo '<pre>';
    echo $query;
    print_r($data);
    Pour les sessions, n'hésite pas à consulter ce cours

    toujours il me demande la vérification du mot de passe même s'il est correct
    Qu'entends-tu par là exactement ? Que quand tu fais F5, tu dois de nouveau saisir ces infos ? Il faudrait vraiment que tu donne plus de code, notamment celui qui affiche ton formulaire.

    En effet, il faut que tu gère ta session PARTOUT, sur toutes tes pages, dont celle qui affiche ton formulaire

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Par défaut
    voilà ce que me donne
    SELECT nom, mdp FROM inscription
    WHERE mdp='202cb962ac59075b964b07152d234b70'
    AND nom='ali'vérifier votre mot de passe


    le mdp n'est pas le même enregistré dans la base (aussi enregistré en utilisant MD5)

    concernant le formulaire de login est le suivant (c simple):
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <form name="insertion" action="login.php" method="POST">
    <table border="0" align="center" cellspacing="2" cellpadding="2">
        <tr align="center">
          <td>Nom utilisateur</td>
          <td><input type="text" name="user"></td>
        </tr>
                <tr align="center">
          <td>Mot de passe</td>
          <td><input type="password" name="mdp"></td>
        </tr>
            <tr align="center">
          <td colspan="2"><input type="submit" value="Valider"></td>
        </tr>
      </table>
    </form>
    </body>
    </html
    Je vais consulter le cour sur les sessions

  8. #8
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    dans l'état, la page qui affiche ton formulaire ne sait pas si l'utilisateur est bien connecté ou non. Il faut que tu rajoute des conditions en fonction de l'état de certaines valeurs de la session.

    En fait je crois que tu as compris une session qui comme un témoin de bonne connexion. C'est une erreur.

    Ta session ne démarre pas une fois que l'utilisateur est connecté, mais tout le temps. Elle sert à garder des informations en "mémoire".

    Quand tu constate que l'utilisateur a rentré les bonnes informations, tu dois stocker un "témoin" (une variable) en session. C'est elle qui permettra de savoir si l'utilisateur est connecté :

    Un exemple :

    page qui vérifie les infos du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    session_start();
    (...)
     
    if($toutestBon) {
        // stocker en mémoire un témoin, qui indique que tout est ok pour la connexion
        $_SESSION['estLoggé'] = true;
        header('Location: ...');
        exit;
    }

    page qui affiche le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    session_start();
     
    // vérifier la présence d utémoin de connexion et qu'il vaut "vrai"
    if(isset($_SESSION['estLoggé']) && $_SESSION['estLoggé'] == true) {
        // l'utilisateur est connecté:
        echo 'vous ne pouvez pas vous identifier, vous êtes déjà connecté'
    } else {
        // l'utilisateur n'est pas connecté. Afficher le formulaire :
        ?>
        <form name="insertion" action="login.php" method="POST">
     
    (...)
    }
    Mais oui relis le cours, il t'aidera à y voir plus clair

  9. #9
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 20
    Par défaut
    merci,
    je vais essayer tous ça

Discussions similaires

  1. [FLASH MX2004] [XMLSocket] Problème avec serveur socket php
    Par cocodunombril dans le forum Flash
    Réponses: 4
    Dernier message: 03/04/2009, 02h10
  2. [Cookies] Problème avec les sessions PHP !!!
    Par boukay dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2006, 17h32
  3. [Conception] Problème de décimales Access>PHP
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/01/2006, 15h47
  4. Probléme d'appel script PHP
    Par pollux93160 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 19h06
  5. Problème Formulaire + popup + page PHP
    Par Invité dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/02/2005, 00h10

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