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 :

Probleme dans l'authentification


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut Probleme dans l'authentification
    Bonjour,

    Je veux creer un formulaire d'authentificaton avec un login et mot de passe,voila donc mon code:

    identification.php
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?php
    session_start();
    ?>
    <?php include("./fonctions.php"); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
     <?php
    if(isset($_POST['envoyer']))
    {
    if($_POST && !empty($_POST['login']) && !empty($_POST['pass1']))
    {
     
     
    $con=mysql_query("select login,pass1 from client");
    $rqt3=mysql_fetch_array($con);
    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass1']));
    $logi =$rqt3['login'];
    $pas=$rqt3['pass1'] ;
    $sql1='select id_client from client where login="'.$_POST['login'].'"';
     
     
    $req1=mysql_query ($sql1) or die ('Erreur SQL !'.$sql1.'<br />'.mysql_error());
    $id_client = mysql_result($req1,0);
     
        if(($logi == $login) && ( $pass == $pas))
        {
     
            $_SESSION['login'] = $login;
    		$_SESSION['id_client'] = $id_client;
     
    	//echo "<p>connexion valide</p>";
    	echo "<script >document.location.replace(\"accueil.php\" );
            </script> ";
    	$testt=1;
    	}
    		else
    			$testt=2;
    			echo "<script >alert(\"Login et/ou mot de pass incorrecte\")</script> ";
    	//echo '<p style="color:red">Mauvais login ou mot de passe</p>';
    	include("index.php");
            exit();
    }
    else
    echo "<script >alert(\"Veuillez remplir leschamps!!\")</script> ";
    //echo '<p style="color:red">Veuillez remplir les champs!!</p>';
     include("index.php");
            exit();
    }
    ?>
    <body>
    </body>
    </html>
    et voila index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form id="form1" name="form1" method="POST" action="identification.php">
                  <label>
                  Login:
                  <input name="login" type="text" id="login" size="15"/>
    </label><br />
                  <label>Mot de passe:</label>
    			      <input name="pass1" type="password" id="pass" size="15" />
    			      <br />
    			      <br />
     
     <input name="envoyer" type="submit" value="se connecter" /></form>
    Mais quand je remplie les vrais informations qui sont contenues dans la base de donnee (login+mot de passe),alors toujours il m'affiche une fenetre javascript qui me dit: Login et/ou mot de pass incorrecte


    Alors ou est le probleme?

  2. #2
    Membre expérimenté

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Bonjour,
    A mon avis il y a une erreur de concéption dans ton code. Je ne vois pas du tout dans ton code l'intéret de la variable $rqt3 ni de ce que tu en fais.

    Je verrais plutot un truc comme ca pour ton programme:

    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
     
    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass1']));
     
    $sql1='select * from client where login="'.$_POST['login'].'"';
    $exe=mysql_query($sql1);
    if($exe)
    {
     
       if(mysql_num_rows($exe)!=1)
       {
         echo "erreur login";
       }else
       {
         $user=mysql_fetch_assoc($exe);      
         if($user["pass1"]==$pass)
          {
              //connexion OK
          }else
         {
            //mauvais mot de passe
         }
       }
    }
    Cordialement

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut
    Salut,

    Mais encore toujours le meme probleme il n'entre pas dans la page d'accueil il se redirige toujours vers index.php

    et voila le code apres l'ajout du code de raideman:

    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
    45
    46
    47
    48
     
    if(isset($_POST['envoyer']))
    {
    if($_POST && !empty($_POST['login']) && !empty($_POST['pass1']))
    {
     
     
    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass1']));
     
    $sql1='select * from client where login="'.$_POST['login'].'"';
    $exe=mysql_query($sql1);
    if($exe)
    {
     
       if(mysql_num_rows($exe)!=1)
       {
         echo "<script >alert(\"Login et/ou mot de pass incorrecte\")</script> ";
       }else
       {
         $user=mysql_fetch_assoc($exe);      
         if($user["pass1"]==$pass)
          {
              //connexion OK
    		   $_SESSION['login'] = $login;
    		$_SESSION['id_client'] = $id_client;
     
    	//echo "<p>connexion valide</p>";
    	echo "<script >document.location.replace(\"accueil.php\" );
            </script> ";
    	$testt=1;
          }else
         {
            //mauvais mot de passe
    		$testt=2;
    			echo "<script >alert(\"Login et/ou mot de pass incorrecte\")</script> ";
    	//echo '<p style="color:red">Mauvais login ou mot de passe</p>';
    	include("index.php");
            exit();
     
         }
       }
    }
    }
    } 
     
     
    ?>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,

    je dis peut etre une betisse vu que je suis newbe en php
    mais je verrai plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($user["pass1"]==$pass)
          {
              //connexion OK
    $_SESSION['login'] = $_POST['login'];
     
          }

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta requête n'est pas protégée contre les injections étant donné que tu utilises directement la donnée saisie.

    htmlspecialchars() n'a rien à faire ici et ne doit etre utilisé ni pour l'insertion ni pour la vérification.

    Puisque tu ne rentres pas dans ton cas if, le debugage minimal a faire est de controler ce que valent les deux variables en jeu.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut
    Salut,

    Mais j'ai ajouté la correction de fahdo,et j'ai éliminé la fonction htmlspecialchars selon la reponse de sabotage et toujours mon code ça marche plus!

    Alors que dois-je faire?

    et merci pour vos réponses.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 61
    Points
    61
    Par défaut
    Fait voir ou tu en es

  8. #8
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut
    voila donc le code:

    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
    45
    46
    47
    48
    49
    50
     
    <?php
    if(isset($_POST['envoyer']))
    {
    if($_POST && !empty($_POST['login']) && !empty($_POST['pass1']))
    {
     
     
    $login = $_POST['login'];
    $pass = $_POST['pass1'];
     
    $sql1='select * from client where login="'.$_POST['login'].'"';
    $exe=mysql_query($sql1);
    if($exe)
    {
     
       if(mysql_num_rows($exe)!=1)
       {
         echo "erreur login";
     
       }else
       {
         $user=mysql_fetch_assoc($exe);      
         if($user["pass1"]==$pass)
          {
              //connexion OK
    		   $_SESSION['login'] = $_POST['login'];
    		$_SESSION['id_client'] = $id_client;
     
    	//echo "<p>connexion valide</p>";
    	echo "<script >document.location.replace(\"accueil.php\" );
            </script> ";
     
          }else
         {
            //mauvais mot de passe
     
    			echo "<script >alert(\"Login et/ou mot de pass incorrecte\")</script> ";
    	//echo '<p style="color:red">Mauvais login ou mot de passe</p>';
    	include("index.php");
            exit();
     
         }
       }
    }
    }
    } 
     
     
    ?>
    Je ne sais pas ou est le probleme!

    Et merci pour vos reponses

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,

    ceci devrait fonctionner

    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
    <?php
    include("./fonctions.php");
     
    if (isset($_POST['envoyer']) && $_POST['envoyer'] == 'se connecter') {
        if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass1']) && !empty($_POST['pass1']))) {
     
        $sql1 = 'SELECT count(*) FROM client WHERE login="'.mysql_real_escape_string($_POST['login']).'" AND pass="'.mysql_real_escape_string($_POST['pass1']).'"';
        $exe = mysql_query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.mysql_error());
        $data = mysql_fetch_array($exe);
     
            if ($data[0] == 1) {
                $_SESSION['login'] = $_POST['login'];
            }
            else if($data[0] == 0) {
                echo = 'Mauvais login ou mot de passe.';
            }
        }
        else if(empty($_POST['login'])) {
            echo 'Veuillez indiquer votre login svp !';
        }
        else if(empty($_POST['pass1'])) {
            echo = 'Veuillez indiquer votre mot de passe svp !';
        }
    }
     
    ?>

Discussions similaires

  1. Probleme dans request.QueryString("chaine")
    Par soufienne dans le forum ASP
    Réponses: 8
    Dernier message: 24/08/2004, 14h49
  2. Probleme dans une procedure stockée
    Par malbaladejo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/07/2004, 14h08
  3. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51
  4. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  5. Probleme dans ma requete
    Par Kuroro dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 11h14

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