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 :

Accéder à une page que si le nom d'utilisateur et le mot de passe sont bons [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut Accéder à une page que si le nom d'utilisateur et le mot de passe sont bons
    J'ai un formulaire :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form action="" method="post">
    <p>
    <li>Nom d'utilisateur : <input type="text" name="user" /> </br>
    <li>Mot de passe      : <input type="password" name="mot_de_passe" />  </br> </br>
    <input type="submit" value="Valider" />
    </p>
    </form>

    J'aimerais donc accéder à une autre page que si les données entrées dans le formulaire sont bons, voila le code que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql="SELECT `nom_CDS` FROM `chef_de_service` WHERE nom_CDS='$user'";
    $resultat=mysql_query($sql)or die (mysql_error());
    $sql2="SELECT `nom_CDS` FROM chef_de_service WHERE mot_de_passe = '$mot_de_passe'" ;
    $resultat2=mysql_query($sql)or die (mysql_error());
    if(!empty($_POST['user']) and !empty($_POST['mot_de_passe'])){ 
    if( mysql_fetch_array($resultat) AND mysql_fetch_array($resultat2))
    {// si le nom d'utilisateur et le mot sont bons, on affiche la page cachée
    Le problème c'est que l'on peut accéder à la page cachée seulement si le nom d'utilisateur est bon, on peut taper n'importe quoi dans le mot de passe et ca passe quand même!!

    Cette ligne la ne sert à rien ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( mysql_fetch_array($resultat) AND mysql_fetch_array($resultat2))
    Merci pour vos réponses

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    y'a une arreur dans le mysql_query de la deuxieme requete; c'est mysql_query($sql2) et non mysql_query($sql) que tu aurais du écrire il me semble.

    De plus il vaut mieux tester je pense le nombre de lignes retournés du gerne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((mysql_num_rows($resultat)==1)&&(mysql_num_rows($resultat2)==1))
    Attention aussi, ta deuxieme requete est mauvaise , il vaudrait mieux que tu fasse un select * from user where login=$login et md=$mdp.

    Donc au final, une requete suffit a ton bonheur en fait.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Salut
    Pour autant que je sache, cett ligne vérifie bien qu'il ya un résultat des 2 côtés. (EDIT :effectivement si $resultat et $resultat2 n'ont pas la même requête ça marchera mieux )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( mysql_fetch_array($resultat) AND mysql_fetch_array($resultat2))
    Ce que tu peux faire, c'est récupérer les identifiants (si tu as un champ id par exmple) et les comparer.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql="SELECT id FROM `chef_de_service` WHERE nom_CDS='$user'";
    $resultat=mysql_query($sql)or die (mysql_error());
    $sql2="SELECT id FROM chef_de_service WHERE mot_de_passe = '$mot_de_passe'" ;
    $resultat2=mysql_query($sql2)or die (mysql_error());
    if(!empty($_POST['user']) and !empty($_POST['mot_de_passe'])){ 
      $data1=mysql_fetch_array($resultat); 
      $data2=mysql_fetch_array($resultat2);
      if($data1['id']== $data2['id'])
      {
        // si les 2 identifiants sont les mêmes...
      }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut
    Merci Raideman et Célira pour vos réponses, mon code marche à présent cependant, j'aimerais que lorsque le nom ou le mot de passe est incorrect on re-affiche la même page pour que l'utilisateur tente de se connecter à nouveau ce que j'ai essayé de faire avec le code 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
    $sql="SELECT id_CDS FROM `chef_de_service` WHERE nom_CDS='$user'";
    $resultat=mysql_query($sql)or die (mysql_error());
    $sql2="SELECT id_CDS FROM chef_de_service WHERE mot_de_passe='$mot_de_passe'" ;
    $resultat2=mysql_query($sql2)or die (mysql_error());
    if(!empty($_POST['user']) and !empty($_POST['mot_de_passe'])){ 
    $data1=mysql_fetch_array($resultat); 
    $data2=mysql_fetch_array($resultat2);
    if($data1['id_CDS']== $data2['id_CDS'])
    {
    // si le nom d'utilisateur et le mot sont bons, on affiche la page cachée
    }
    else // le mot de passe ou le nom d'utilisateur n'est pas  bon
    {
    // On affiche la zone de texte pour s'enregistrer.
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>Identification de l'utilisateur</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    <h2><strong>Cette page est réservée aux chefs de service ainsi qu'aux directeurs d'établissement.</strong></h2> <hr>
    <p>Veuillez saisir votre Nom ainsi que votre Mot de Passe.</p>
     
    <form action="" method="post">
    <p>
    <li>Nom d'utilisateur : <input type="text" name="user" /> </br>
    <li>Mot de passe      : <input type="password" name="mot_de_passe" />  </br> </br>
    <input type="submit" value="Valider" />
    </p>
    </form>
    </body>
    </html>
    }
    Cependant cela m'affiche une page blanche et nom la page d'identification!
    Merci encore pour tout !

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je ne sais pas si le problème vient de là, mais il manque une réouverture de balise à la fin.
    Code php : 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
    else // le mot de passe ou le nom d'utilisateur n'est pas  bon
    {
    // On affiche la zone de texte pour s'enregistrer.
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>Identification de l'utilisateur</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    <h2><strong>Cette page est réservée aux chefs de service ainsi qu'aux directeurs d'établissement.</strong></h2> <hr>
    <p>Veuillez saisir votre Nom ainsi que votre Mot de Passe.</p>
     
    <form action="" method="post">
    <p>
    <li>Nom d'utilisateur : <input type="text" name="user" /> </br>
    <li>Mot de passe      : <input type="password" name="mot_de_passe" />  </br> </br>
    <input type="submit" value="Valider" />
    </p>
    </form>
    </body>
    </html>
    <?php
    }
    ?>
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut
    Voici le code de mon else en entier :

    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
     
    else // le mot de passe ou le nom d'utilisateur n'est pas  bon
    {
    // On affiche la zone de texte pour s'enregistrer.
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>Identification de l'utilisateur</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    <h2><strong>Cette page est réservée aux chefs de service ainsi qu'aux directeurs d'établissement.</strong></h2> <hr>
    <p>Veuillez saisir votre Nom ainsi que votre Mot de Passe.</p>
     
    <form action="" method="post">
    <p>
    <li>Nom d'utilisateur : <input type="text" name="user" /> </br>
    <li>Mot de passe      : <input type="password" name="mot_de_passe" />  </br> </br>
    <input type="submit" value="Valider" />
    </p>
    </form>
    	</body>
    </html>
     
    <?php
              } // fin du else
     
    mysql_close(); // Déconnexion de MySQL
     
    // Fin du code
    ?>

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Effectivement, ça ne vient pas de la balise

    Si j'ai bien compris, tu remplis les champs, tu cliques sur valider. Si le login/mot de passe est incorrect, normalement on rentre dans le else et on affiche le formulaire... Et ton problème, c'est que la page reste blanche.
    Bon, on va reprendre aux sources :p Ton formulaire d'origine (le 1er) se trouve sur une page mettons identification.php, et charge une 2e page verification.php où se trouve le test et le 2e formulaire ? ou est-ce que tout se passe dans la même page ?
    Et si tu regardes le code source de la page blanche, qu'est-ce qu'il ya dedans ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/04/2014, 14h38
  2. Réponses: 1
    Dernier message: 26/05/2012, 11h53
  3. Identification pour accéder à une page
    Par Alfred456654 dans le forum ASP
    Réponses: 16
    Dernier message: 20/11/2007, 19h06
  4. Réponses: 10
    Dernier message: 26/07/2006, 07h52
  5. Accéder à une page web sans passer par login et mdp
    Par benthebest dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/07/2006, 01h04

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