Sauvegarder les données d'un formulaire avec session
binousha_1022
Messages postés
44
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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
testcommande.php
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:
- Sauvegarder les données d'un formulaire avec session
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
- Supprimer les données de navigation - Guide
23 réponses
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
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
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).
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci, le voici.
login.php
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>
-
Après quelques corrections je n'ai plus l'erreur mais il ne m'affiche pas nomagence. Il affiche seulement Bonjour, sylvie Vous ȇtes à
D'après ton script de connexion, le nom de ton agence est dans
Pourrais tu ajouter, dans ton fichier commande.php
juste après le
un
et nous montrer ce que ça t'affiche ?
$_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 ?
Il affiche ceci:
Array ( [loggedin] => 1 [id] => [username] => sylvie[nomagence] => [agence] => Array ( ) )
Array ( [loggedin] => 1 [id] => [username] => sylvie[nomagence] => [agence] => Array ( ) )
Comme tu peux le voir.. ta variable de session ne contient pas les infos de ton user....
Tu as oublié de faire un fetch ..
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;
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.
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>
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.
Il reste sur la même page avec ce message:
Array
(
[username] => sylvie
[password] => passer123
)
Array
(
[username] => sylvie
[password] => passer123
)
petite erreur de copier/coller
Essaye celui la :
et en complément, fais nous une capture écran du résultat...
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...
pour info, un peu de lecture : https://apprendre-php.com/tutoriels/tutoriel-35-scuriser-les-mots-de-passe-avec-les-hashs-et-les-salts.html
<?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>
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.
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.
Merci qu'à même pour votre aide.