Sauvegarder les données d'un formulaire avec session

binousha_1022 Messages postés 44 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour chers membres, j'ai besoin d'aide.

En fait j'ai crée une plateforme qui permet aux utilisateurs de se connecter, de saisir des données et de les afficher. Maintenant au cours de la saisie l'utilisateur doit avoir une page qui lui dit "Bonjour 'username' vous êtes à l'entreprise 'nomagence' et le programme doit stocker username et nomagence dans la session et les enregistrer au moment de l'enregistrement des données du formulaire. Voici les codes qui m'affichent des erreurs.

Merci d'avance!

commande.php


<?php
// Initialize the session
session_start();
$serveur = "localhost";
$dbname = "base";
$user = "root";
$pass = "";
//$agence = $_SESSION["nomagence"];
$_SESSION["agence"] = $_POST;
$username = $_SESSION["username"];
//Si la variable $_POST['truc'] existe, alors $truc = $_POST['truc']  sinon elle vaut NULL 
$agence = isset($_SESSION["nomagence"]) ? $_SESSION["nomagence"] : NULL;

//ou avec !EMPTY() 
//Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc']  sinon elle vaut NULL 
$agence = !empty($_SESSION["nomagence"]) ? $_SESSION["nomagence"] : NULL;
$sql='SELECT * FROM users'; 
?>
<html>
     <head>
		 <meta charset="utf-8"/>
		 <link rel="stylesheet" href="inscription.css"/>
		 </head>
<h4>Bonjour, <b>
<?php
 echo htmlspecialchars($_SESSION["username"]);
 ?>
 
 Vous ȇtes à la société
 
 <?php 
 
 echo htmlspecialchars($_SESSION["nomagence"]);
 
 ?>
 </h4>Enrer une nouvelle commande</b>        
        <form action="testcommande.php" method="post">
		<!--<div class="c100">
                <label for="agence">Agence : </label>
                <input type="varchar" id="agence" name="agence">
            </div>
			<div class="c100">
                <label for="nomagent">Nom de l'agent : </label>
                <input type="varchar" id="nomagent" name="nomagent">
            </div>-->
		<div class="c100">
                <label for="datecommande">Date commande : </label>
                <input type="date" id="datecommande" name="datecommande">
            </div>
            <div class="c100">
                <label for="numerocompte">N° Compte Client : </label>
                <input type="varchar" id="numerocompte" name="numerocompte">
            </div>
            <div class="c100">
                <label for="prenom">Prenom : </label>
                <input type="varchar" id="prenom" name="prenom">
            </div>
            <div class="c100">
                <label for="nom">Nom : </label>
                <input type="varchar" id="nom" name="nom">
            </div>
		
			<div class="c100">
                <label for="montant">Montant : </label>
                <input type="float" id="montant" name="montant">
            </div>
			<div class="c100">
                <label for="acompte">Acompte : </label>
                <input type="float" id="acompte" name="acompte">
            </div>
			<div class="c100">
                <label for="solde">Solde : </label>
                <input type="float" id="solde" name="solde">
            </div>
			<div class="c100">
                <label for="datenvoie">Date Envoie : </label>
                <input type="date" id="datenvoie" name="datenvoie">
            </div>
			
            <div class="c100">
                <input type="checkbox" id="statut" name="statut" value="envoie">
                <label for="statut">Envoie</label>
                
            </div>
            
            <div class="c100" id="submit">
                <input type="submit" value="Envoyer">
            </div>
        </form>
</html>


testcommande.php
<?php
    $serveur = "localhost";
    $dbname = "base";
    $user = "root";
    $pass = "";
    
    $agence = $_SESSION["agence"];
	$nomagent = $_SESSION["nomagent"];
	$datecommande = $_POST["datecommande"];
    $numerocompte = $_POST["numerocompte"];
    $prenom = $_POST["prenom"];
    $nom = $_POST["nom"];
    $montant = $_POST["montant"];
    $acompte = $_POST["acompte"];
	$solde = $_POST["solde"];
    $datenvoie = $_POST["datenvoie"];
    $statut = $_POST["statut"];
	
    
    try{
        //On se connecte à la BDD
        $dbco = new PDO("mysql:host=$serveur;dbname=$dbname",$user,'');
        $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        //On insère les données reçues
        $sth = $dbco->prepare("
            INSERT INTO commande(datecommande, numerocompte, prenom, nom, montant, acompte, solde, datenvoie, statut, agence, nomagent)
            VALUES(:datecommande, :numerocompte, :prenom, :nom, :monture, :montant, :acompte, :solde, :datenvoie, :statut, :agence, :nomagent)");
        $sth->bindParam(':datecommande',$datecommande);
        $sth->bindParam(':numerocompte',$numerocompte);
        $sth->bindParam(':prenom',$prenom);
		$sth->bindParam(':nom',$nom);
		$sth->bindParam(':montant',$montant);
		$sth->bindParam(':acompte',$acompte);
		$sth->bindParam(':solde',$solde);
		$sth->bindParam(':datenvoie',$datenvoie);
		$sth->bindParam(':statut',$statut);
	    $sth->bindParam(':agence',$agence);
	    $sth->bindParam(':nomagent',$nomagent);
	    $sth->bindParam(':service',$service);

		


        $sth->execute();
        
        //On renvoie l'utilisateur vers la page de remerciement
        header("Location:choixaction.php");
    }
    catch(PDOException $e){
        echo 'Impossible de traiter les données. Erreur : '.$e->getMessage();
    }
?>

23 réponses

  • 1
  • 2
Résumé de la discussion

La problématique porte sur la gestion de session en PHP pour afficher un message de bienvenue personnalisé et stocker le nom d'utilisateur et l'agence, puis les enregistrer lors de l'enregistrement des données du formulaire. Des optimisations clés incluent l'initialisation de session_start() au tout début de chaque script, ne pas écraser $_SESSION avec $_POST, et stocker $_SESSION['username'] et $_SESSION['nomagence'] dès la connexion pour les réutiliser lors de l'enregistrement. Des erreurs dans l'écriture des requêtes et les noms de paramètres, comme 'monture' au lieu de 'montant', peuvent bloquer l'insertion et le routage; le débogage passe par l'affichage de $_SESSION et $_POST.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour

    Et quelles sont les erreurs qui te sont affichées ?
    0
  2. binousha_1022 Messages postés 44 Statut Membre
     
    Bonjour, merci Jordan 45 pour votre réponse.

    Voici le message d'erreur que j'ai:

    ( ! ) Notice: Undefined index: nomagence in C:\wamp64\www\suivicommandeV\commande.php on line 36
    Call Stack
    # Time Memory Function Location
    1 0.0004 403144 {main}( ) ...\commande.php:0

    En plus il m'affiche seulement bonjour Sylvie (si c'est Sylvie qui est connectée) vous êtes à la société sans citer le nom de l'agence. Merci
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    sans citer le nom de l'agence

    Normal .. vu qu'il t'indique :
    Undefined index: nomagence

    Et comme il est sympa .. il te donne même le nom du fichier et la ligne qui génère cette erreur

    C:\wamp64\www\suivicommandeV\commande.php on line 36

    autrement dit
    echo htmlspecialchars($_SESSION["nomagence"]);
    


    La solution se trouve dans le lien suivant :
    https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index

    Je vois d'ailleurs que tu utilises
     $_SESSION["nomagence"] 

    alors que ton script avait à peu prêt bien commencé... en récupérant PROPREMENT les variables AVANT de les utiliser
    $agence = !empty($_SESSION["nomagence"]) ? $_SESSION["nomagence"] : NULL;
    

    par contre.. tu as cette ligne de code ... deux fois...
    pourquoi ?

    Mais vu, que dans ton formulaire, le champ se nomme "agence" et pas "nomagence" .. je pense que tu as fais une erreur
     <input type="varchar" id="agence" name="agence">
    

    En plus le type varchar .. ça n'existe pas pour un input html ...
    il faut mettre text
     <input type="text" id="agence" name="agence">
    


    Je constate également que tu as prévu de faire une requête sql
    $sql='SELECT * FROM users'; 

    mais tu ne l'utilises nul part ....

    Il faut vraiment que tu essayes de comprendre les lignes de code que tu écris au lieu de juste faire des copier/coller un peu au pif ( c'est l'impression que ton code me donne ! )
    Et surtout.. savoir prendre deux minutes pour relire ton code.
    Et si tu n'avais pas compris le message d'erreur.. et bien il serait temps d'essayer d'apprendre un peu l'anglais ( c'est un minimum quand on se lance dans la programmation).
    0
  4. binousha_1022 Messages postés 44 Statut Membre
     
    Merci pour vos remarques. En fait le code marchait très bien mais j'ai voulu maintenant que l'utilisateur n'entre pas nomagence et nomagent et le programme les affiche sur l'écran après s’être identifié. Par contre nomagence c'est le nom du champ dans la table users et agence est dans un autre table (commande) dans laquelle on doit insérer les données du formulaire.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Donc, quel est le code qui est exécuté pour l'authentification de l'utilisateur ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. binousha_1022 Messages postés 44 Statut Membre
     
    Autre chose, je suis débutante et ce n'est pas ma spécialité. Merci pour votre compréhension.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Il me faut Le code que tu utilises pour "authentifier" les utilisateurs ( nom du fichier + son code )
      De là..on avancera progressivement...
      0
  7. binousha_1022 Messages postés 44 Statut Membre
     
    Merci, le voici.

    login.php

    <?php
    // Initialize the session
    session_start();
     
    // Check if the user is already logged in, if yes then redirect him to welcome page
    if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
        header("location: welcome.php");
        exit;
    }
     
    // Include config file
    require_once "config.php";
     
    // Define variables and initialize with empty values
    $username = $password = "";
    $username_err = $password_err = "";
     
    // Processing form data when form is submitted
    if($_SERVER["REQUEST_METHOD"] == "POST"){
     
        // Check if username is empty
        if(empty(trim($_POST["username"]))){
            $username_err = "Veuillez entrer votre nom d'utilisateur.";
        } else{
            $username = trim($_POST["username"]);
        }
        
        // Check if password is empty
        if(empty(trim($_POST["password"]))){
            $password_err = "s'il vous plait entrez votre mot de passe.";
        } else{
            $password = trim($_POST["password"]);
        }
        
        // Validate credentials
        if(empty($username_err) && empty($password_err)){
            // Prepare a select statement
            $sql = "SELECT id, username, password, service, nomagence FROM users WHERE username = ? and password = ?";
            
            if($stmt = mysqli_prepare($link, $sql)){
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, 'ss', $username, $password);
                
                // Attempt to execute the prepared statement
                if(mysqli_stmt_execute($stmt)){
                    // Store result
                    mysqli_stmt_store_result($stmt);
    				mysqli_stmt_bind_result($stmt, $id, $username, $password, $service,$nomagence);
                    
                    // Check if username exists, if yes then verify password
                    if(mysqli_stmt_num_rows($stmt) == 1){                    
                       
                            //session_start();
                                
    						// Store data in session variables
    						$_SESSION["loggedin"] = true;
    						$_SESSION["id"] = $id;
    						$_SESSION["username"] = $username;                            
    						$_SESSION["nomagence"] = $nomagence;                            
    
    						// Redirect user
    						if (mysqli_stmt_fetch($stmt)) {						
    							if ($service == "agence")
    							{
    							 header('Location: choix.php');
    							}
    							else if ($service == "comptabilite")
    							{
    								header('Location: espacecomptable.php');
    							}
    							else if ($service == "direction")
    							{
    								header('Location: espaceadmin.php');
    							}
    							else if($service == "logistique")
    							{
    								header('Location: espacelogistique.php');
    							}
    							
    						}
                        
                    } else{
                        // Display an error message if username doesn't exist
                        $username_err = "Nom d'utilisateur ou mot de passe incorrect.";
                    }
                } else{
                    echo "Oops! Quelque chose s'est mal passé. Veuillez réessayer plus tard.";
                }
            }
            
            // Close statement
            mysqli_stmt_close($stmt);
        }
        
        // Close connection
        mysqli_close($link);
    }
    ?>
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
        <style type="text/css">
            body{ font: 14px sans-serif; }
            .wrapper{ width: 350px; padding: 20px; }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <p>Veuillez saisir vos identifiants pour vous connecter.</p>
            <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                <div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
                    <label>Username</label>
                    <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                    <span class="help-block"><?php echo $username_err; ?></span>
                </div>    
                <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
                    <label>Password</label>
                    <input type="password" name="password" class="form-control">
                    <span class="help-block"><?php echo $password_err; ?></span>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" value="Login">
                </div>
                <p>Vous n'avez pas de compte? <a href="inscrivezvous.php">S'inscrire maintenant</a>.</p>
            </form>
        </div>    
    </body>
    </html>
    -
    
    0
  8. binousha_1022 Messages postés 44 Statut Membre
     
    Après quelques corrections je n'ai plus l'erreur mais il ne m'affiche pas nomagence. Il affiche seulement Bonjour, sylvie Vous ȇtes à
    0
  9. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    D'après ton script de connexion, le nom de ton agence est dans
    $_SESSION["nomagence"] = $nomagence;
    


    Pourrais tu ajouter, dans ton fichier commande.php
    juste après le
    session_start(); 


    un
     print_r($_SESSION);  

    et nous montrer ce que ça t'affiche ?
    0
  10. binousha_1022 Messages postés 44 Statut Membre
     
    Il affiche ceci:

    Array ( [loggedin] => 1 [id] => [username] => sylvie[nomagence] => [agence] => Array ( ) )
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Comme tu peux le voir.. ta variable de session ne contient pas les infos de ton user....
      Tu as oublié de faire un fetch ..
      mysqli_stmt_fetch($stmt);    
      


      // Check if username exists, if yes then verify password
      if(mysqli_stmt_num_rows($stmt) == 1){                    
      
        mysqli_stmt_fetch($stmt);    
        
        // Store data in session variables
        $_SESSION["loggedin"] = true;
        $_SESSION["id"] = $id;
        $_SESSION["username"] = $username;                            
        $_SESSION["nomagence"] = $nomagence;
      
      0
  11. binousha_1022 Messages postés 44 Statut Membre
     
    Je l'ai fait mais je ne peux plus me connecter.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu as un message d'erreur ?
      En quoi ne peux tu plus te connecter ?
      Faudrait que tu sois un tantinet plus loquace .. car si il faut 50 messages à chaque fois pour obtenir des détails.. je vais vite abandonner.
      0
  12. binousha_1022 Messages postés 44 Statut Membre
     
    Excusez moi je suis désolées, cela montre mon caractère de débutante. En fait je mets le user et le mot de pass et il ne fait rien, il supprime le mot de pass et reste sur la même page sans message d'erreur. Merci encore pour votre aide çà me permet d'avancer.
    0
  13. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Teste ce code et dis moi ce que ça t'affiche
    <?php
    // Initialize the session
    session_start ();
    
    //Affichage des erreurs PHP
    error_reporting ( E_ALL );
    ini_set ( 'display_errors', TRUE );
    ini_set ( 'display_startup_errors', TRUE );
    
    // Check if the user is already logged in, if yes then redirect him to welcome page
    if ( isset ( $_SESSION["loggedin"] ) && $_SESSION["loggedin"] === true ) {
      header ( "location: welcome.php" );
      exit;
    }
    
    // Include config file
    require_once "config.php";
    
    // Define variables and initialize with empty values
    $username = $password = "";
    $username_err = $password_err = "";
    
    //récupération PROPRE des variables AVANT de les utiliser
    $username = !empty ( $_POST["username"] ) ? trim ( $_POST["username"] ) : NULL;
    $password = !empty ( $_POST["password"] ) ? trim ( $_POST["password"] ) : NULL;
    
    
    
    
    // Processing form data when form is submitted
    if ( $_SERVER["REQUEST_METHOD"] == "POST" ) {
      //Juste le temps des tests
      echo "<pre>";
      print_r ( $_POST );
      echo "</pre>";
    
      // Check if username is empty
      if ( !$username ) {
        $username_err = "Veuillez entrer votre nom d'utilisateur.";
      }
    
      // Check if password is empty
      if ( !$password ) {
        $password_err = "s'il vous plait entrez votre mot de passe.";
      }
    
      // Validate credentials
      if ( $username && $password ) {
        // Prepare a select statement
        $sql = "SELECT id, username, password, service, nomagence
                    FROM users
                    WHERE username = ? and password = ?";
    
        if ( $stmt = mysqli_prepare ( $link, $sql ) ) {
          // Bind variables to the prepared statement as parameters
          mysqli_stmt_bind_param ( $stmt, 'ss', $username, $password );
    
          // Attempt to execute the prepared statement
          if ( mysqli_stmt_execute ( $stmt ) ) {
            // Store result
            mysqli_stmt_store_result ( $stmt );
    
            // Check if username exists, if yes then verify password
            if ( mysqli_stmt_num_rows ( $stmt ) == 1 ) {
              mysqli_stmt_bind_result ( $stmt, $id, $username, $password, $service, $nomagence );
              mysqli_stmt_fetch ( $stmt );
              // Store data in session variables
              $_SESSION["loggedin"] = true;
              $_SESSION["id"] = $id;
              $_SESSION["username"] = $username;
              $_SESSION["nomagence"] = $nomagence;
    
              // Redirect user
              if ( mysqli_stmt_fetch ( $stmt ) ) {
                switch ( $service){
                  case "agence" : 
                    $redirectTo = ' choix.php';
                  break;
                case "comptabilite" : 
                    $redirectTo = ' espacecomptable.php';
                  break;
                case "direction" : 
                    $redirectTo = ' espaceadmin.php';
                  break;
                case "logistique" : 
                    $redirectTo = ' espacelogistique.php';
                  break;
                default:
                  echo " Aucune Agence ne correspond !";
                  
                  //le temps des tests...
                  echo "<br><pre>Resultat de la requête :";
                  print_r(array($id, $username, $password, $service, $nomagence));
                  echo "</pre>";
                  
                  
                  exit;
                  break;
                }
                header('Location :'.$redirectTo);
                exit;
              }
            } else {
              // Display an error message if username doesn't exist
              $username_err = "Nom d'utilisateur ou mot de passe incorrect.";
            }
          } else {
            echo "Oops! Quelque chose s'est mal passé. Veuillez réessayer plus tard.";
            //erreur lors de la requête
            printf ( "Erreur sql : %s\n", mysqli_error ( $link ) );
          }
        }
        // Close statement
        mysqli_stmt_close ( $stmt );
      }
    
      // Close connection
      mysqli_close ( $link );
    }
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
        <style type="text/css">
          body{ font: 14px sans-serif; }
          .wrapper{ width: 350px; padding: 20px; }
        </style>
      </head>
      <body>
        <div class="wrapper">
          <p>Veuillez saisir vos identifiants pour vous connecter.</p>
          <form action="" method="post">
            <div class="form-group <?php echo (!empty ( $username_err )) ? 'has-error' : ''; ?>">
              <label>Username</label>
              <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
              <span class="help-block"><?php echo $username_err; ?></span>
            </div>
            <div class="form-group <?php echo (!empty ( $password_err )) ? 'has-error' : ''; ?>">
              <label>Password</label>
              <input type="password" name="password" class="form-control">
              <span class="help-block"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
              <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Vous n'avez pas de compte ? <a href="inscrivezvous.php">S'inscrire maintenant</a>.</p>
          </form>
        </div>
      </body>
    </html>
    

    0
  14. binousha_1022 Messages postés 44 Statut Membre
     
    Il permet à l'utilisateur de se connecter selon son profil. Après avoir mis ses paramètres de connexion, il est redirigé vers son espace de travail.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      oui et ?
      Je ne t'ai pas demandé à quoi sert le script... ça je l'avais bien compris...

      Je t'ai demandé de remplacer ton code par le mien et de tester et de nous dire ce que ça t'affiche
      0
  15. binousha_1022 Messages postés 44 Statut Membre
     
    Il reste sur la même page avec ce message:

    Array
    (
    [username] => sylvie
    [password] => passer123
    )
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      petite erreur de copier/coller

      Essaye celui la :
      <?php
      // Initialize the session
      session_start ();
      
      //Affichage des erreurs PHP
      error_reporting ( E_ALL );
      ini_set ( 'display_errors', TRUE );
      ini_set ( 'display_startup_errors', TRUE );
      
      // Check if the user is already logged in, if yes then redirect him to welcome page
      if ( isset ( $_SESSION["loggedin"] ) && $_SESSION["loggedin"] === true ) {
        header ( "location: welcome.php" );
        exit;
      }
      
      // Include config file
      require_once "config.php";
      
      // Define variables and initialize with empty values
      $username = $password = "";
      $username_err = $password_err = "";
      
      //récupération PROPRE des variables AVANT de les utiliser
      $username = !empty ( $_POST["username"] ) ? trim ( $_POST["username"] ) : NULL;
      $password = !empty ( $_POST["password"] ) ? trim ( $_POST["password"] ) : NULL;
      
      
      
      
      // Processing form data when form is submitted
      if ( $_SERVER["REQUEST_METHOD"] == "POST" ) {
        //Juste le temps des tests
        echo "<pre>";
        print_r ( $_POST );
        echo "</pre>";
      
        // Check if username is empty
        if ( !$username ) {
          $username_err = "Veuillez entrer votre nom d'utilisateur.";
        }
      
        // Check if password is empty
        if ( !$password ) {
          $password_err = "s'il vous plait entrez votre mot de passe.";
        }
      
        // Validate credentials
        if ( $username && $password ) {
          // Prepare a select statement
          $sql = "SELECT id, username, password, service, nomagence
                      FROM users
                      WHERE username = ? and password = ?";
      
          if ( $stmt = mysqli_prepare ( $link, $sql ) ) {
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param ( $stmt, 'ss', $username, $password );
      
            // Attempt to execute the prepared statement
            if ( mysqli_stmt_execute ( $stmt ) ) {
              // Store result
              mysqli_stmt_store_result ( $stmt );
              $nbRows = mysqli_stmt_num_rows ( $stmt );
              echo "<br> Nombre de résultats trouvés :" . $nbRows;
              // Check if username exists, if yes then verify password
              if ( $nbRows == 1 ) {
                mysqli_stmt_bind_result ( $stmt, $id, $username, $password, $service, $nomagence );
                mysqli_stmt_fetch( $stmt );
                 //le temps des tests...
                 echo "<br><pre>Resultat de la requête :";
                 print_r ( array($id, $username, $password, $service, $nomagence) );
                 echo "</pre>";
                 
                // Store data in session variables
                $_SESSION["loggedin"] = true;
                $_SESSION["id"] = $id;
                $_SESSION["username"] = $username;
                $_SESSION["nomagence"] = $nomagence;
      
                // Redirect user
                switch ( $service ) {
                  case "agence" :
                    $redirectTo = ' choix.php';
                    break;
                  case "comptabilite" :
                    $redirectTo = ' espacecomptable.php';
                    break;
                  case "direction" :
                    $redirectTo = ' espaceadmin.php';
                    break;
                  case "logistique" :
                    $redirectTo = ' espacelogistique.php';
                    break;
                  default:
                    echo " Aucune Agence ne correspond !";
                    exit;
                    break;
                }
                header ( 'Location :' . $redirectTo );
                exit;
              } else {
                // Display an error message if username doesn't exist
                $username_err = "Nom d'utilisateur ou mot de passe incorrect.";
              }
            } else {
              echo "Oops! Quelque chose s'est mal passé. Veuillez réessayer plus tard.";
              //erreur lors de la requête
              printf ( "Erreur sql : %s\n", mysqli_error ( $link ) );
            }
          }
          // Close statement
          mysqli_stmt_close ( $stmt );
        }
      
        // Close connection
        mysqli_close ( $link );
      }
      ?>
      
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <title>Login</title>
          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
          <style type="text/css">
            body{ font: 14px sans-serif; }
            .wrapper{ width: 350px; padding: 20px; }
          </style>
        </head>
        <body>
          <div class="wrapper">
            <p>Veuillez saisir vos identifiants pour vous connecter.</p>
            <form action="" method="post">
              <div class="form-group <?php echo (!empty ( $username_err )) ? 'has-error' : ''; ?>">
                <label>Username</label>
                <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                <span class="help-block"><?php echo $username_err; ?></span>
              </div>
              <div class="form-group <?php echo (!empty ( $password_err )) ? 'has-error' : ''; ?>">
                <label>Password</label>
                <input type="password" name="password" class="form-control">
                <span class="help-block"><?php echo $password_err; ?></span>
              </div>
              <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Login">
              </div>
              <p>Vous n'avez pas de compte ? <a href="inscrivezvous.php">S'inscrire maintenant</a>.</p>
            </form>
          </div>
        </body>
      </html>
      

      et en complément, fais nous une capture écran du résultat...
      0
  16. binousha_1022 Messages postés 44 Statut Membre
     
    C'est fait et j'ai ceci:

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ah oui.
      Il faut mettre en commentaire la redirection pour l'instant
      //header ( 'Location :' . $redirectTo );
      //exit;
      


      et je serai toi, je mettrai également en commentaire la redirection liée à la vérif de session du départ
       // header ( "location: welcome.php" );
       // exit;
      
      0
  17. binousha_1022 Messages postés 44 Statut Membre
     
    Je suis restées sur la même page avec ce message:

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Donc là, on a bien les bonnes infos.
      Donc ok;
      Réactive les redirections et mets en commentaire les debug
      0
  18. binousha_1022 Messages postés 44 Statut Membre
     
    Bonjour, j'ai réactivé les redirections et mis en commentaire les debugs et j'ai la 1ère photo.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Montre ton code modifié qu'on regarde ce qui pourrait coincer...
      0
  19. binousha_1022 Messages postés 44 Statut Membre
     
    <?php
    // Initialize the session
    session_start ();
    
    //Affichage des erreurs PHP
    //error_reporting ( E_ALL );
    //ini_set ( 'display_errors', TRUE );
    //ini_set ( 'display_startup_errors', TRUE );
    
    // Check if the user is already logged in, if yes then redirect him to welcome page
    if ( isset ( $_SESSION["loggedin"] ) && $_SESSION["loggedin"] === true ) {
      header ( "location: welcome.php" );
      exit;
    }
    
    // Include config file
    require_once "config.php";
    
    // Define variables and initialize with empty values
    $username = $password = "";
    $username_err = $password_err = "";
    
    //récupération PROPRE des variables AVANT de les utiliser
    $username = !empty ( $_POST["username"] ) ? trim ( $_POST["username"] ) : NULL;
    $password = !empty ( $_POST["password"] ) ? trim ( $_POST["password"] ) : NULL;
    
    
    
    // Processing form data when form is submitted
    if ( $_SERVER["REQUEST_METHOD"] == "POST" ) {
      //Juste le temps des tests
      echo "<pre>";
      print_r ( $_POST );
      echo "</pre>";
    
      // Check if username is empty
      if ( !$username ) {
        $username_err = "Veuillez entrer votre nom d'utilisateur.";
      }
    
      // Check if password is empty
      if ( !$password ) {
        $password_err = "s'il vous plait entrez votre mot de passe.";
      }
    
      // Validate credentials
      if ( $username && $password ) {
        // Prepare a select statement
        $sql = "SELECT id, username, password, service, nomagence
                    FROM users
                    WHERE username = ? and password = ?";
    
        if ( $stmt = mysqli_prepare ( $link, $sql ) ) {
          // Bind variables to the prepared statement as parameters
          mysqli_stmt_bind_param ( $stmt, 'ss', $username, $password );
    
          // Attempt to execute the prepared statement
          if ( mysqli_stmt_execute ( $stmt ) ) {
            // Store result
            mysqli_stmt_store_result ( $stmt );
            $nbRows = mysqli_stmt_num_rows ( $stmt );
            echo "<br> Nombre de résultats trouvés :" . $nbRows;
            // Check if username exists, if yes then verify password
            if ( $nbRows == 1 ) {
              mysqli_stmt_bind_result ( $stmt, $id, $username, $password, $service, $nomagence );
              mysqli_stmt_fetch( $stmt );
               //le temps des tests...
               echo "<br><pre>Resultat de la requête :";
               print_r ( array($id, $username, $password, $service, $nomagence) );
               echo "</pre>";
               
              // Store data in session variables
              $_SESSION["loggedin"] = true;
              $_SESSION["id"] = $id;
              $_SESSION["username"] = $username;
              $_SESSION["nomagence"] = $nomagence;
    
              // Redirect user
              switch ( $service ) {
                case "agence" :
                  $redirectTo = ' choixaction.php';
                  break;
                case "comptabilite" :
                  $redirectTo = ' espacecomptable.php';
                  break;
                case "direction" :
                  $redirectTo = ' espaceadmin.php';
                  break;
                case "logistique" :
                  $redirectTo = ' espacelogistique.php';
                  break;
                default:
                  echo " Aucune Agence ne correspond !";
                  exit;
                  break;
              }
             header ( 'Location :' . $redirectTo );
             exit;
            } else {
              // Display an error message if username doesn't exist
              $username_err = "Nom d'utilisateur ou mot de passe incorrect.";
            }
          } else {
            echo "Oops! Quelque chose s'est mal passé. Veuillez réessayer plus tard.";
            //erreur lors de la requête
            printf ( "Erreur sql : %s\n", mysqli_error ( $link ) );
          }
        }
        // Close statement
        mysqli_stmt_close ( $stmt );
      }
    
      // Close connection
      mysqli_close ( $link );
    }
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
        <style type="text/css">
          body{ font: 14px sans-serif; }
          .wrapper{ width: 350px; padding: 20px; }
        </style>
      </head>
      <body>
        <div class="wrapper">
          <p>Veuillez saisir vos identifiants pour vous connecter.</p>
          <form action="" method="post">
            <div class="form-group <?php echo (!empty ( $username_err )) ? 'has-error' : ''; ?>">
              <label>Username</label>
              <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
              <span class="help-block"><?php echo $username_err; ?></span>
            </div>
            <div class="form-group <?php echo (!empty ( $password_err )) ? 'has-error' : ''; ?>">
              <label>Password</label>
              <input type="password" name="password" class="form-control">
              <span class="help-block"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
              <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Vous n'avez pas de compte ? <a href="inscrivezvous.php">S'inscrire maintenant</a>.</p>
          </form>
        </div>
      </body>
    </html>
    
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Il reste des echo et des print_r ... normal que ça ne fonctionne pas !
      0
  20. binousha_1022 Messages postés 44 Statut Membre
     
    Bonjour, c'est le code que vous avez modifié biensur qu'il y'a des print_r. Je penses que c'est autre chose. Merci qu'à même pour votre aide.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Je t'ai demandé

      Réactive les redirections et mets en commentaire les debug

      Ce à quoi tu m'as répondu :

      j'ai réactivé les redirections et mis en commentaire les debugs


      Donc... tu ne devrais plus avoir aucun echo ou print_r !!!!
      0
  21. binousha_1022 Messages postés 44 Statut Membre
     
    Bonjour, oui j'avais pas prêté attention sur les echo et print_r restants. Maintenant j'ai tout commenté j'arrives à me logger mais le nom de l'agence n'apparait toujours pas (sur la page de redirection après logging) et c'était cela l'objet de ma publication.
    Merci qu'à même pour votre aide.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Donc,
      Une fois que tu es logué, tu arrives sur quelle page ( url dans la barre de navigation de ton navigateur) ?
      Montres nous le code qui correspond à cette page .
      Et, ajoutes y avant, un
      print_r($_SESSION);
      

      juste après le
      session_start();
      


      Et montres nous ce que ça t'affiche.
      0
  • 1
  • 2