Code php "SESSION UTILISATEUR" ne fonctionne pas
Résolu/Fermé
A voir également:
- Code php "SESSION UTILISATEUR" ne fonctionne pas
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code telephone oublié - Guide
- Code blocks - Télécharger - Langages
2 réponses
jordane45
Messages postés
38472
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mai 2025
4 744
11 mars 2018 à 08:05
11 mars 2018 à 08:05
Bonjour
Tu as bien mis un
session_start(); dans chaque fichier ?
Tu as bien mis un
session_start(); dans chaque fichier ?
jordane45
Messages postés
38472
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mai 2025
4 744
Modifié le 12 mars 2018 à 06:30
Modifié le 12 mars 2018 à 06:30
Ton code est sacrément bordelique... :-)
Tu répètes plusieurs fois les mêmes bouts de code...
On ne sait plus où on se trouve ni à quoi ils servent...
Je te propose un truc du genre :
NB: Tu noteras que je te mets le code avec la coloration syntaxique... (la couleur...)
C'est quand même plus lisible....
Il serait temps que tu le fasses aussi !
Infos ici: https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Il serait bien aussi que tu lises (et appliques ) le contenu des deux liens suivants :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Tu répètes plusieurs fois les mêmes bouts de code...
On ne sait plus où on se trouve ni à quoi ils servent...
Je te propose un truc du genre :
<?php //démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //récupération PROPRE des variables AVANT de les utiliser ! $name = !empty($_SESSION['name']) ? $_SESSION['name'] : NULL; $login = !empty($_POST['login']) ? $_POST['login'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; $logout = !empty($_GET['logout']) && $_GET['logout']==true ? $_GET['logout'] : NULL; //je te laisse compléter le traitement du logout si nécéssaire... if($logout){ session_destroy(); //... } //---------------------------// //début du traitement //---------------------------// if($name){ //si utilisateur déjà logué.. include de la page welcome and logout ?> <aside> <fieldset> <legend> Interface Admin </legend> <p>Bienvenue <span style="color: rgb(0, 117, 255);"> <?php echo $name; ?> </span>!</p> <p>-> <a href="?logout=true" name="logout" style="color: rgb(255, 99, 0);">Déconnexion</a> <-</p> </fieldset> <?php }else{ //sinon.. affichage gestion de la connexion si un login et un password sont envoyés en POST... if($login && $password){ //on prépare les données de la requête $datas = array('login' => $login); $sql = 'SELECT * FROM admin WHERE login = :login'; //on place CHAQUE requête dans un bloc TRY/CATCH pour trapper les éventuelles erreurs ! try{ $query = $db->prepare($sql); $query->execute($datas); $return = $query->fetch(); }catch(Exception $e){ echo "Erreur dans la requête " . $sql . " <br> Erreur : ". $e->getMessage(); } $userExist = !empty($return) ? true : false; if($userExist){ $isPasswordCorrect = password_verify($password, $return['password']); if($isPasswordCorrect){ //utilisateur authentifié.. on rempli les variables de session $_SESSION['name'] = !empty($return['name']) ? $return['name'] : NULL; $_SESSION['id'] = !empty($return['id']) ? $return['id'] : NULL; $_SESSION['login'] = !empty($return['login']) ? $return['login'] : NULL; }else{ //Mauvais password ! // tu peux mettre un message si tu le souhaites //... echo "<span style="color: rgb(0, 117, 255);">Mot de passe incorrect !</span>"; } }else{ //user inconnu ! // tu peux mettre un message si tu le souhaites //... echo "<span style="color: rgb(0, 117, 255);">Utilisateur inconnu !</span>"; } } ?> <!-- Connexion admin --> <form method="post" action=""> <fieldset> <legend> Interface Admin </legend> <label for="login">Identifiant</label> : <input type="text" name="login" id="login" placeholder="Identifiant" required /> <br /><br /> <label for="pass">Mot de Passe</label> : <input type="password" name="password" id="pass" placeholder="Password" required /><br /><br /> <input type="submit" value="Connexion" id="submit" name="submit" /> </fieldset> </form> <?php } ?> </aside>
NB: Tu noteras que je te mets le code avec la coloration syntaxique... (la couleur...)
C'est quand même plus lisible....
Il serait temps que tu le fasses aussi !
Infos ici: https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Il serait bien aussi que tu lises (et appliques ) le contenu des deux liens suivants :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Merci pour l'aide. Ton code par contre me renvoie une erreur au niveau des guillemets.
J'ai donc arrangé:
Il reste tout de même l'erreur:
Notice: Undefined index: name in /Applications/MAMP/htdocs/test.php on line 43.
}else{ //Mauvais password ! // tu peux mettre un message si tu le souhaites //... echo "<span style="color: rgb(0, 117, 255);">Mot de passe incorrect !</span>"; } }else{ //user inconnu ! // tu peux mettre un message si tu le souhaites //... echo "<span style="color: rgb(0, 117, 255);">Utilisateur inconnu !</span>"; }
J'ai donc arrangé:
}else{ //Mauvais password ! // tu peux mettre un message si tu le souhaites //... echo '<span style="color: rgb(0, 117, 255);">Mot de passe incorrect !</span>'; } }else{ //user inconnu ! // tu peux mettre un message si tu le souhaites //... echo '<span style="color: rgb(0, 117, 255);">Utilisateur inconnu !</span>'; }
Il reste tout de même l'erreur:
Notice: Undefined index: name in /Applications/MAMP/htdocs/test.php on line 43.
<fieldset> <legend> Interface Admin </legend> <p>Bienvenue <span style="color: rgb(0, 117, 255);"> <?php echo $_SESSION['name']; ?> </span>!</p> <p>-> <a href="?logout=true" name="logout" style="color: rgb(255, 99, 0);">Déconnexion</a> <-</p> </fieldset>
jordane45
Messages postés
38472
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mai 2025
4 744
12 mars 2018 à 06:33
12 mars 2018 à 06:33
Ça n'est pas dans le code que je t'ai donné...
Et si tu as lu les liens... Récupère proprement les variables AVANT de les utiliser
Et si tu as lu les liens... Récupère proprement les variables AVANT de les utiliser
jordane45
Messages postés
38472
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mai 2025
4 744
12 mars 2018 à 06:34
12 mars 2018 à 06:34
Le seul problème est le mot de passe considéré comme incorrect.
C'est à dire je rentre les bonnes coordonnées mais la session ne s'ouvre pas.
J'ai une réponse: mot de passe incorrect.
C'est à dire je rentre les bonnes coordonnées mais la session ne s'ouvre pas.
J'ai une réponse: mot de passe incorrect.
<?php try { $db = new PDO('mysql:host=localhost; dbname=web','root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } //démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //récupération PROPRE des variables AVANT de les utiliser ! $name = !empty($_SESSION['name']) ? $_SESSION['name'] : NULL; $login = !empty($_POST['login']) ? $_POST['login'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; $logout = !empty($_GET['logout']) && $_GET['logout']==true ? $_GET['logout'] : NULL; //je te laisse compléter le traitement du logout si nécéssaire... if($logout){ session_destroy(); //... } //---------------------------// //début du traitement //---------------------------// if($name){ //si utilisateur déjà logué.. include de la page welcome and logout ?> <aside> <fieldset> <legend> Interface Admin </legend> <p>Bienvenue <span style="color: rgb(0, 117, 255);"> <?php echo $name; ?> </span>!</p> <p>-> <a href="?logout=true" style="color: rgb(255, 99, 0);">Déconnexion</a> <-</p> </fieldset> <?php }else{ //sinon.. affichage gestion de la connexion si un login et un password sont envoyés en POST... if($login && $password){ //on prépare les données de la requête $datas = array('login' => $login); $sql = 'SELECT * FROM admin WHERE login = :login'; //on place CHAQUE requête dans un bloc TRY/CATCH pour trapper les éventuelles erreurs ! try{ $query = $db->prepare($sql); $query->execute($datas); $return = $query->fetch(); }catch(Exception $e){ echo "Erreur dans la requête " . $sql . " <br> Erreur : ". $e->getMessage(); } $userExist = !empty($return) ? true : false; if($userExist){ $isPasswordCorrect = password_verify($password, $return['password']); if($isPasswordCorrect){ //utilisateur authentifié.. on rempli les variables de session $_SESSION['name'] = !empty($return['name']) ? $return['name'] : NULL; $_SESSION['id'] = !empty($return['id']) ? $return['id'] : NULL; $_SESSION['login'] = !empty($return['login']) ? $return['login'] : NULL; }else{ //Mauvais password ! // tu peux mettre un message si tu le souhaites //... echo '<span style="color: rgb(0, 117, 255);">Mot de passe incorrect !</span>'; } }else{ //user inconnu ! // tu peux mettre un message si tu le souhaites //... echo '<span style="color: rgb(0, 117, 255);">Utilisateur inconnu !</span>'; } } ?> <!-- Connexion admin --> <form method="post" action=""> <fieldset> <legend> Interface Admin </legend> <label for="login">Identifiant</label> : <input type="text" name="login" id="login" placeholder="Identifiant" required /> <br /><br /> <label for="pass">Mot de Passe</label> : <input type="password" name="password" id="pass" placeholder="Password" required /><br /><br /> <input type="submit" value="Connexion" id="submit" name="submit" /> </fieldset> </form> <?php } ?> </aside>
jordane45
Messages postés
38472
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mai 2025
4 744
12 mars 2018 à 18:20
12 mars 2018 à 18:20
Le seul problème est le mot de passe considéré comme incorrect.
Comment as tu stocké le password en bdd ?
Fais nous un print_r de ta variable $return et montre nous le résultat...
11 mars 2018 à 08:07
NOT isset name ? Tu es sûr... ?
Modifié le 11 mars 2018 à 12:19
11 mars 2018 à 12:37
11 mars 2018 à 13:10
La session fonctionne mais le nom d'utilisateur ne s'affiche pas.
11 mars 2018 à 13:15