Probleme de connection

Résolu
Bonjour,

g un probleme avec ma page de connection :

 <?php

    require("connect.php");
        if(isset($_POST['username'])AND isset($_POST['Motd_passe'])){


        $username=htmlspecialchars($_POST['username']);
        $Motd_passe=htmlspecialchars($_POST['Motd_passe']);
       

       
        $requete="SELECT * FROM administrateur";
        $query=sqlsrv_query($conn,$requete);
        while($donnees=sqlsrv_fetch_array($query))
        { 
          if($donnees['username']==$username && $donnees['Motd_passe']==$Motd_passe)
          {  
            session_start();
            $_SESSION['id']=$donnees['id'];
            $_SESSION['admin']=$username;
         
           header("Location:../Base/ordinateur/production/index_o.php");
           
          }
        }
       sqlsrv_close($query);
       

}

?>
   

<!DOCTYPE html>
<html lang="en">
  <head>

<body>

                      
          <div class="right_col" role="main" >
            <form method="POST" action="">

          
			<fieldset>
           <div style="margin:20%";>
              <table >
              <tr>
              <td>Login: </td>
              <td>  <input type="text" name="username" required>
              </td>
              </tr>

              <tr>
              <td> Mot de Passe: </td>
              <td><input type="password" name="Motd_passe" required></td>
              </tr>

              <tr><td>
              <button type="submit"               Value="Connection">Connection</button>
            </div>    
            

            </td></tr>
            	
             </table>
             </fieldset>
          

            </form>
         </div>

  </body>
</html>


quand je rentre l'username et le pass je reste toujours dans la meme page la redirection n'est pas faite. toute aide est la bienvenue.

Cordialement,

Imelda

3 réponses

  1. Modérateur
    Bonjour

    Des erreurs dans ton code en pagaille .... des balises HTML mal fermée ou mal placée ....
    La vérification du User/password se fait DIRECTEMENT dans la BDD via un WHERE et non par un IF en PHP ....
    Bref...

    Essaye ceci :
    <?php
    // Affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display-errors','on');
    
    //connexion à la BDD
    require_once "connect.php";
      
      
    //récupération PROPRE des variables
    $username= !empty($_POST['username']) ? htmlspecialchars($_POST['username']) : NULL;
    $Motd_passe = !empty($_POST['Motd_passe']) ? htmlspecialchars($_POST['Motd_passe']) : NULL ;
    
    //traitement du submit
    if($username && $Motd_passe){
      $requete="SELECT * 
                FROM administrateur 
                WHERE username = '$username'
                  AND Motd_passe = '$Motd_passe';";
      $query=sqlsrv_query($conn,$requete);
      $donnees=sqlsrv_fetch_array($query);
      sqlsrv_close($query);
      if(!empty($donnees)){
          session_start();
          $_SESSION['id']=$donnees['id'];
          $_SESSION['admin']=$username;
       
         header("Location:../Base/ordinateur/production/index_o.php");
         exit(); //toujours mettre un Exit apres une redirection ...   
      } 
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
      <head>
       <title>
        Connexion
       </title>
      </head>
     <body>               
      <div class="right_col" role="main" >
        <form method="POST" action="">   
          <fieldset>
            <div style="margin:20%";>
              <table >
               <tr>
                <td>
                 Login: 
                </td>
                <td>  
                 <input type="text" name="username" required>
                </td>
              </tr>
              <tr>
               <td>
                Mot de Passe: 
               </td>
               <td>
                <input type="password" name="Motd_passe" required>
               </td>
              </tr>
              <tr>
               <td>
                <button type="submit" Value="Connection">Connection</button>
               </td>
              </tr>
             </table>
            </div>    
          </fieldset>
        </form>
      </div>
     </body>
    </html>
    


    Au passage .... je suis assez étonné ..... Le password n'est pas encodé ?? (à minima en SHA1 ? )

    0
    1. Bonjour,

      Désolé d'avoir pris tout ce temps pour répondre,
      j'ai fait quelque petite modification dans le code et ça marche et merci j'avais complètement oublié de crypter le mot de passe.
        <?php
                        // connection à la BDD 
                       require("connect.php");
      
                       //récupération PROPRE des variables 
                   if(isset($_POST['username'])AND isset($_POST['Motd_passe'])){
                   
                         $username=htmlspecialchars($_POST['username']);
                                       $Motd_passe=sha1(htmlspecialchars($_POST['Motd_passe']));
                                  
                                try{             
                                $requete="SELECT * FROM administrateur";
                                $query=sqlsrv_query($conn, $requete);
                                
                                while($donnees=sqlsrv_fetch_array($query)){ 
                                  
                                  if($donnees['username']===$username && $donnees['Motd_passe']===$Motd_passe){  
                                    
                                      session_start();
                                      $_SESSION['id']=$donnees['id'];
                                      $_SESSION['admin']=$username;
                                     
                        header("Location: ../../ordinateur/production/index_o.php");  
                                                          
                              }
                              
                            }
                            sqlsrv_free_stmt($query);
                            
                          }catch(Exception $e){
                            die('Erreur '.$e->getMessage());
                          }
                           
                            }
                        sqlsrv_close($query);
      
                    ?>


      @Fontainard j'avais pas besoin d'un autre fichier pour le code php.
      Merci pour votre aide.

      Cordialement Imelda
      0
      1. Modérateur
        Hello
        Tu penseras à mettre la discussion en Résolue stp.
        0
    2. Bonjour,

      Première remarque, le traitement de tes donnés, en l’occurrence ton code php doit se faire à part de ton formulaire (sur un fichier.php distinct).

      Il te manques par ailleurs l'action du formulaire comme par exemple <form method="POST" action="traiter.php"> ou tu dois cibler le fichier avec lequel tu récupére les donnés avec ton php. bon courage.
      -2
      1. Modérateur
        Bonjour
        1- Pas besoin de fichiet distinct
        2- l'action et la methode sont bien presents dans son code.
        0