Configuration de sessions dans mon site internet en php
Ferméjordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 14 déc. 2022 à 15:17
- Configuration de sessions dans mon site internet en php
- Ethernet n'a pas de configuration ip valide - Guide
- Site de telechargement - Accueil - Outils
- Site de vente en ligne particulier - Guide
- Site comme coco - Accueil - Réseaux sociaux
- Url site internet - Guide
3 réponses
14 déc. 2022 à 11:24
J'oubliais, presque, voici aussi ma table sql si ça peut aider :
14 déc. 2022 à 11:31
Bonjour,
Plusieurs choses à corriger
verifications.php
<?php session_start(); error_reporting(E_ALL); // activer tous les niveaux de rapport d'erreur ini_set('display_errors', 'on'); //-----------------------------------------------------------// // Connexion à la bdd // A déplacer dans un fichier à part et à require dans les pages // où tu en as besoin !! //-----------------------------------------------------------// try{ $bdd = new PDO('mysql:host=localhost;dbname=neptune;charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //-----------------------------------------------------------// // Validation du formulaire //-----------------------------------------------------------// //Récupéaration propre des variables AVANT de les utiliser // pour ça, tu peux utilisr l'écriture ternaire (sorte de if/else) $email = !empty($_POST['email']) ? trim($_POST['email']) : NULL; $pswd = !empty($_POST['pswd']) ? trim($_POST['pswd']) : NULL; if ($email && $pswd) { //-----------------------------------------------------------// // On récupère les infos de l'utilisateur en fonction de son email //-----------------------------------------------------------// $sql = 'SELECT * FROM password WHERE email =:email'; $stmt = $bdd->prepare($sql ); //prépare la requête en évitant les injonctions sql $stmt->execute(['email' => $email]); //vérifie si l'utiisateur existe bien $user = $stmt->fetch(); // ajoute les résultats de la colonne au tableau $user $bddPswd = $user['pswd']; // NB : On ne doit pas stocker le mot de passe en clair dans la bdd... il faut le "crypter" ( renseignes toi sur les fonctions password_hash et password_verify if (password_verify($pswd, $bddPswd)){ $_SESSION['user'] = ['email'=>$user['email'],'id'=>$user['id']]; header("Location:index.php"); exit; } else { $errorMessage = sprintf('Les informations envoyées ne permettent pas de vous identifier : (%s/%s)', $email, $pswd ); $_SESSION['error']=$errorMessage; echo $errorMessage; exit; } } ?>
Session.php
<?php //session.php error_reporting(E_ALL); // activer tous les niveaux de rapport d'erreur ini_set('display_errors', 'on'); //-----------------------------------------------------------// // Connexion à la bdd // A déplacer dans un fichier à part et à require dans les pages // où tu en as besoin !! //-----------------------------------------------------------// try{ $bdd = new PDO('mysql:host=localhost;dbname=neptune;charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //Récupéaration propre des variables AVANT de les utiliser $email = !empty($_SESSION['user']['email']) ? trim($_SESSION['user']['email']) : NULL; if ($email){ $sql = 'SELECT * FROM password WHERE email= :email'; $stmt = $bdd->prepare($sql); $tmt->execute(['email' => $email]); // $loggedUser = $stmt->fetch(); echo 'Bonjour '. $loggedUser['first_name']; }
connexion.php
<?php //connexion.php // Activation de l'affichage des erreurs PHP session_start(); error_reporting(E_ALL); ini_set('display_errors', 'on'); include 'cookie.php'; include 'navbar.php'; include 'session.php' // Récupération de la variable de session 'error' s'il y en a une $errorMessage = !empty($_SESSION['error']) ? !empty($_SESSION['error']) : NULL; ?> <!DOCTYPE html> <html> <head> <title>Hôtel Neptune</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--viewport=zone de la fenêtre dans laquelle le contenu web peut être vu, device-width= largeur de l'écran en pixels CSS à une échelle de 100% --> <meta charset= UTF8> <link rel="stylesheet" href="Style.css"> <link rel="stylesheet" href="bootstrap.min.css"> <script type="text/javascript" src="bootstrap.bundle.js"></script> <meta name="description" content="Bienvenue sur le site de l'hôtel Neptune à Carnon 34280 (Hérault), venez découvrir notre établissement et réserver vos vacances."> </head> <body> <div class="BoxRésérvations"> <div class="reserve">Se connecter</div> <form action="verification.php" method="POST"> <?php if($errorMessage) { echo '<div class="alert alert-danger" role="alert">'; echo $errorMessage; echo "</div>"; } ?> <p> Adresse mail <input class="champ1" type="email" name="email" placeholder="***@***"> Mot de passe <input class="champ1" type="password" name="pswd" placeholder="password"> </p> <input type="submit" value="Valider" class="btn btn-light"> </form> <div class="content"> </div> <div class="BoxRésérvations"> <div> <p class="reserve"> Pas encore de compte?</p> <a href="inscription.php"><button class="btn btn-light">S'inscrire</button><a> </div> </div> </div> </body> </html>
Modifié le 14 déc. 2022 à 12:33
Merci beaucoup, pour cette aide, cela semble bien mieux marcher, cependant, j'ai un toujours du mal à déconnecter l'utilisateur, j'ai une page d'accueil, qui a ce code afin d'afficher un petit message personnel s'il l'utilisateur est connecté :
<?php if (isset($_SESSION['email'])):?> <div class="end"> Bienvenue <?php echo $loggedUser['first_name'];?> <a href="logout.php"><button class="btn btn-outline-primary">Se déconnecter</button></a> </div> <?php endif; ?>
, grâce à ton aide précieuse, cela affiche bien le bon résultat sur la page d'accueil, cependant, impossible de me déconnecter et tester cela avec d'autres comptes, voici mon court code pour logout.php :
<?php session_destroy(); unset($_SESSION['SESSION_VAR'] ); setcookie(session_name(), "", time() - 3600); header('Location: index.php'); ?>
à la base il n'y avait que la première et la dernière ligne mais j'ai ajouté celles du milieu en espérant que cela puisse marcher, ce n'est pas le cas
14 déc. 2022 à 15:17
Commence par faire un var_dump de la variable $_SESSION .... tu verras ce qu'elle contient et sous quelle forme elle se présente. ça t'évitera d'inventer des noms de variable qui n'existent pas :-)