Partage
  • Partager sur Facebook
  • Partager sur Twitter

Page de connexion en php fonctionnant avec mysql.

Anonyme
    5 mai 2020 à 18:31:06

    Bonjour mon code à l'air correcte mais je n'arrive pas à mettre le nom de ma table en place..
    <?php
    session_start();
    if(isset($_POST['name']) && isset($_POST['password']))
    {
        // connexion à la base de données
        $db_username = 'root';
        $db_password = '';
        $db_name     = 'users';
        $db_host     = 'localhost';
        $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
               or die('could not connect to database');
        
        // on applique les deux fonctions mysqli_real_escape_string et htmlspecialchars
        // pour éliminer toute attaque de type injection SQL et XSS
        $username = mysqli_real_escape_string($db,htmlspecialchars($_POST['name'])); 
        $password = mysqli_real_escape_string($db,htmlspecialchars($_POST['password']));
        
        if($username !== "" && $password !== "")
        {
            $requete = "SELECT count(*) FROM utilisateur where 
                  name = '".$name."' and mot_de_passe = '".$password."' ";
            $exec_requete = mysqli_query($db,$requete);
            $reponse      = mysqli_fetch_array($exec_requete);
            $count = $reponse['count(*)'];
            if($count!=0) // nom d'utilisateur et mot de passe correctes
            {
               $_SESSION['name'] = $name;
               header('Location: principale.php');
            }
            else
            {
               header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
            }
        }
        else
        {
           header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
        }
    }
    else
    {
       header('Location: login.php');
    }
    mysqli_close($db); // fermer la connexion
    ?>

    -
    Edité par Anonyme 5 mai 2020 à 19:19:31

    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2020 à 18:42:40

      Bonjour,

      Et tu comtes en faire qu'à ta tête ou tu nous écoutes ?

      Car on t'a mainte fois dit de ne pas mettre de htmlspecialchar sur les données entrée en BDD...... (cf ma signature)

      Ensuite d'où sort $name ? ça ne serais pas $username ?

      Et un mot de passe en clair dans la bdd, pas top

      Pour ton count et le récupérer plus simplement tu peux remplacer 

      "SELECT count(*) FROM"

      par 

      SELECT count(*) as nombre FROM"

      ce que tu récupères ensuite ligne 24 par $reponse['nombre']

      • Partager sur Facebook
      • Partager sur Twitter
        5 mai 2020 à 18:55:42 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


        Pas d'aide concernant le code par MP, le forum est là pour ça :)

        Anonyme
          5 mai 2020 à 19:17:00

          Bonjour..

          J'écoute attentivement vos conseils et je vous en remercie énormément d’ailleurs, c'est pour cela que je suis actif sur ce site et non pas d'autres :)

          Je demande juste un code de connexion simple.. le mot de passe en clair je sais que cela n'est pas top et qu'il faut faire le hachage maintenant et pas après mais pour l'instant si je n'arrive pas avec des mots de passe en clair sa sera encore plus compliquer de rajouter des lignes dont je ne comprendrai à moitié l’utilité.

          Je cherche à me connecter à ma table aussi car chose qui n'est pas faîtes..

          Deplus, j'ai 6erreurs, deux sur la ligne 14 sur les variables username et password

          deux sur la ligne 17 exactement pareil.

          Et une mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\wamp64\www\users\connexion_bdd.php on line 19


          ET Cannot modify header information - headers already sent by (output started at C:\wamp64\www\users\connexion_bdd.php:19) in C:\wamp64\www\users\connexion_bdd.php on line 28


          Merci vraiment de votre compréhension...

          -
          Edité par Anonyme 5 mai 2020 à 19:18:28

          • Partager sur Facebook
          • Partager sur Twitter
            5 mai 2020 à 19:23:06

            Première erreur : ta requête est fausse => débute ton code par : mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

            Seconde erreur : à ignorer pour le moment, ce n'est qu'une conséquence de la première

            Ligne 14 et 17, ça ne correspond à rien : il faudrait redonner ton code, on ne sait pas ce que tu as ou non modifié ainsi que les erreurs complètes. Tu dis avoir 6 erreurs mais n'en donnes que 2 ...

            -
            Edité par julp 5 mai 2020 à 19:27:16

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              5 mai 2020 à 19:33:23

              Oui pardon !!
              <?php
              session_start();
              if(isset($_POST['username']) && isset($_POST['password']))
              {
                  // connexion à la base de données
                  $db_username = 'root';
                  $db_password = '';
                  $db_name     = 'users';
                  $db_host     = 'localhost';
                  $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
                         or die('could not connect to database');
              		   
              		   
                  if($username !== "" && $password !== "")
                  {
                      $requete = "SELECT count(*) as nombre FROM utilisateur where 
                            username = '".$username."' and mot_de_passe = '".$password."' ";
                      $exec_requete = mysqli_query($db,$requete);
                      $reponse      = mysqli_fetch_array($exec_requete);
                      $count = $reponse['count(*)'];
                      if($count!=0) // nom d'utilisateur et mot de passe correctes
                      {
                         $_SESSION['username'] = $username;
                         header('Location: principale.php');
                      }
                      else
                      {
                         header('Location: connexion.php?erreur=1'); // utilisateur ou mot de passe incorrect
                      }
                  }
                  else
                  {
                     header('Location: connexion.php?erreur=2'); // utilisateur ou mot de passe vide
                  }
              }
              else
              {
                 header('Location: connexion.php');
              }
              mysqli_close($db); // fermer la connexion
              ?>
              Je modifie ce que tu m'as dis aussi
              • Partager sur Facebook
              • Partager sur Twitter
                5 mai 2020 à 19:36:54

                $username et $password sortent d'où ? A quel moment fais-tu "$username =" ?

                Je t'ai demandé d'enlever htmlspecialchar pas le reste qui était très bien.

                Tu as utilisé un alias dans ta requête comme je te l'ai montré et c'est très bien. Il faut aussi l'utiliser ligne 20 à la place de "count(*)"

                • Partager sur Facebook
                • Partager sur Twitter
                  5 mai 2020 à 19:48:50

                  Enlever le count et tester directement le résultat du fetch, ça facilitera(it) la migration vers password_hash

                      if($_POST['name'] !== "" &amp;&amp; $_POST['password'] !== "")
                      {
                          $username = mysqli_real_escape_string($db, $_POST['name']);
                          $requete = "SELECT * FROM utilisateur WHERE name = '$username'";
                          $exec_requete = mysqli_query($db, $requete);
                          $reponse      = mysqli_fetch_array($exec_requete);
                          if($reponse &amp;&amp; $reponse['mot_de_passe'] === $_POST['password'])
                          {
                             $_SESSION['name'] = $name;
                             header('Location: principale.php');
                          }
                          else
                          {
                             header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
                          }
                      }
                  

                  -
                  Edité par julp 5 mai 2020 à 19:59:04

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    5 mai 2020 à 21:33:46

                    Moi même je me suis perdu car j'ai nommée "username" dans ma base de donnée pour l'utilisateur..

                    <?php
                    session_start();
                    if(isset($_POST['username']) && isset($_POST['password']))
                    {
                        // connexion à la base de données
                        $db_username = 'root';
                        $db_password = '';
                        $db_name     = 'users';
                        $db_host     = 'localhost';
                        $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
                               or die('could not connect to database');
                    		   
                    		   
                           if($_POST['name'] !== "" &amp;&amp; $_POST['password'] !== "")
                        {
                            $username = mysqli_real_escape_string($db, $_POST['name']);
                            $requete = "SELECT * FROM utilisateur WHERE name = '$username'";
                            $exec_requete = mysqli_query($db, $requete);
                            $reponse      = mysqli_fetch_array($exec_requete);
                            if($reponse &amp;&amp; $reponse['mot_de_passe'] === $_POST['password'])
                            {
                               $_SESSION['name'] = $name;
                               header('Location: principale.php');
                            }
                            else
                            {
                               header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
                            }
                        }
                        else
                        {
                           header('Location: connexion.php?erreur=2'); // utilisateur ou mot de passe vide
                        }
                    }
                    else
                    {
                       header('Location: connexion.php');
                    }
                    mysqli_close($db); // fermer la connexion
                    ?>

                    Sachant que j'ai nommée username dans ma bdd je dois remplacer le name sa me semble logique non?

                    https://www.php.net/manual/fr/function.mysqli-connect.php deplus il n'y a pas la connexion à ma table, je me connecte à ma table comment par la ligne 17?

                    s'il vous plaît

                    -
                    Edité par Anonyme 6 mai 2020 à 12:38:07

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Page de connexion en php fonctionnant avec mysql.

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown