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 - 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;
Je l'ai fait mais je ne peux plus me connecter.
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.