Sauvegarder les données d'un formulaire avec session

Fermé
binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020 - 12 mai 2020 à 12:21
jordane45 Messages postés 38444 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 - 2 juin 2020 à 14:20
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();
    }
?>
A voir également:

23 réponses

binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020
2 juin 2020 à 11:50
Une fois que je suis loguées je me redirige vers cette page "Choixaction.php".

<?php
// Initialize the session
session_start();
print_r($_SESSION);
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}
?>
<!Doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Bienvenue</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; text-align: center; }
    </style>
</head>
    <body>    
<center>
 
    <div class="page-header">
        <h5>Bienvenue, <b><?php echo htmlspecialchars($_SESSION["username"]); 
		?>
 
 </b>,Vous ȇtes à ...<b>
 
 <?php 
 
 echo htmlspecialchars($_SESSION["nomagence"]);
 
 ?>
		 </b></h5>
    </div>
    <p>
        <a href="commande.php" title="Saisir une nouvelle commande " class="btn btn-warning">Nouvelle commande</a>
		<a href="choisiragenceaff.html" title="lister les commandes " class="btn btn-warning">Liste des commandes</a>
		<a href="listeclient.php" title="lister les commandes à livrer" class="btn btn-warning">Liste des commandesr</a> 
        <a href="logout.php" class="btn btn-danger">Déconnexion</a>
    </p>
</center>
</body>
</html>



On a ceci comme résultat:
0
jordane45 Messages postés 38444 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 4 737
2 juin 2020 à 12:17
Tu as remarqué que id est également vide ?
Ce qui n'est pas normal si tu arrives bien depuis la page que nous avons retravaillé précédemment...


On va faire un test...
Dans le code de la page précédente
tu remplaces :
  // Store data in session variables
          $_SESSION["loggedin"] = true;
          $_SESSION["id"] = $id;
          $_SESSION["username"] = $username;
          $_SESSION["nomagence"] = $nomagence;

par
  // Store data in session variables
          $_SESSION["loggedin"] = true;
          $_SESSION["id"] = $id;
          $_SESSION["username"] = $username;
          $_SESSION["nomagence"] = "Agence :". $nomagence;
          $_SESSION["TEST"] = "TEST";


Puis tu testes à nouveau et tu nous montres ce que t'affiches le print_r de session que tu as mis dans ta page choixaction.php
0
binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020
2 juin 2020 à 12:57
0
jordane45 Messages postés 38444 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 4 737
2 juin 2020 à 13:21
Donc le code fonctionne....
Es-tu sûr que ta requête retourne quelque-chose ??

On va encore faire un test...
modifie à nouveau les variables de session comme ceci :
// Store data in session variables
          $_SESSION["loggedin"] = true;
          $_SESSION["id"] = $id;
          $_SESSION["username"] = $username;
          $_SESSION["nomagence"] = "Agence :". $nomagence;
          $_SESSION["TEST"] =  array($id, $username, $password, $service, $nomagence);
          $_SESSION["NBROWS"] = $nbRows;
0
binousha_1022 Messages postés 41 Date d'inscription mercredi 11 décembre 2019 Statut Membre Dernière intervention 25 juin 2020
2 juin 2020 à 13:53
Bien sur toutes les requêtes marchent très bien, je suis à la finalisation du projet, c'est pourquoi je modifies certaines choses pour assurer la sécurité.

0
jordane45 Messages postés 38444 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 février 2025 4 737
2 juin 2020 à 14:20
Est-ce que tu lis ce que tu nous postes ?
(je parles du résultat en capture d'écran... )

Par ce que... ben.... ta requête ne retourne AUCUN résultat....

Ou alors... c'est juste que tu ne supprimes pas tes variables de session avant d'essayer de te loguer....

On va faire un test..
Tu vas créer un fichier logout.php
contenant le code suivant
<?php

session_start();
$_SESSION["loggedin"] = false;
$_SESSION["id"] = null;
$_SESSION["username"] = null;
$_SESSION["nomagence"] = null;
$_SESSION["TEST"] =  null;
$_SESSION["NBROWS"] = 0;



puis tu vas appeller cette page.

Une fois fait, tu ré-ouvres ton formulaire de connexion... et tu refais le test...


Il serait bien également de vider tes variables de session dans les ELSE de ton formulaire de connexion
   } else {
          // Display an error message if username doesn't exist
        $username_err = "Nom d'utilisateur ou mot de passe incorrect.";
        $_SESSION["loggedin"] = false;
        $_SESSION["id"] = null;
        $_SESSION["username"] = null;
        $_SESSION["nomagence"] = null;
        $_SESSION["TEST"] =  null;
         $_SESSION["NBROWS"] = 0;
        }
      } 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 ) );
        $_SESSION["loggedin"] = false;
        $_SESSION["id"] = null;
        $_SESSION["username"] = null;
        $_SESSION["nomagence"] = null;
        $_SESSION["TEST"] =  null;
        $_SESSION["NBROWS"] = 0;
      }
0