Problème de déconnexion cookies php
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
bonjour, j'ai un problème avec mes cookies de mon site car je voudrait les supprimer mais sa marche pas. Vous pourrais mieux comprendre avec les code suivant:
- pour se déconnecter et supprimer les cookies mais marche pas:
<?php // Démarrer la session session_start(); // Supprimer la variable de session unset($_SESSION["nom_utilisateur"]); // Supprimer le cookie de connexion setcookie("nom_utilisateur", "", time() - 3600, "/"); // Expire le cookie // Rediriger l'utilisateur vers la page de connexion header("Location: page_connexion.php"); exit(); ?>
- pour l'inscription:
<?php // Vérifier si le formulaire d'inscription a été soumis if ($_SERVER["REQUEST_METHOD"] == "POST") { // Récupérer les données du formulaire $nom = $_POST["nom"]; $email = $_POST["email"]; $mot_de_passe = password_hash($_POST["mot_de_passe"], PASSWORD_DEFAULT); // Enregistrer l'utilisateur dans un fichier (exemple : utilisateurs.json) $utilisateurs = json_decode(file_get_contents('utilisateurs.json'), true); // Vérifier si le nom d'utilisateur est déjà pris foreach ($utilisateurs as $utilisateur) { if ($utilisateur['nom'] == $nom) { echo "Le nom d'utilisateur est déjà pris."; exit(); } } // Vérifier si l'utilisateur existe déjà avec cet e-mail foreach ($utilisateurs as $utilisateur) { if ($utilisateur['email'] == $email) { echo "L'utilisateur avec cet e-mail existe déjà."; exit(); } } // Ajouter le nouvel utilisateur $nouvel_utilisateur = [ 'nom' => $nom, 'email' => $email, 'mot_de_passe' => $mot_de_passe, ]; // Ajouter l'utilisateur au tableau $utilisateurs[] = $nouvel_utilisateur; // Enregistrer dans le fichier file_put_contents('utilisateurs.json', json_encode($utilisateurs, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); echo "Inscription réussie."; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Inscription</title> </head> <body> <h1>Inscription</h1> <form method="post" action=""> <label for="nom">Nom d'utilisateur:</label> <input type="text" name="nom" required><br> <label for="email">E-mail:</label> <input type="email" name="email" required><br> <label for="mot_de_passe">Mot de passe:</label> <input type="password" name="mot_de_passe" required><br> <button type="submit">S'inscrire</button> </form> </body> </html>
- pour la page d'accueil temporaire:
<?php session_start(); // Vérifier si l'utilisateur est connecté if (!isset($_SESSION["nom_utilisateur"])) { // Rediriger l'utilisateur vers la page de connexion s'il n'est pas connecté header("Location: page_connexion.php"); exit(); } // Récupérer le nom d'utilisateur depuis la session $nom_utilisateur = $_SESSION["nom_utilisateur"]; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Menu</title> <style> body { font-family: Arial, sans-serif; text-align: center; margin: 0; padding: 0; background-color: #f0f0f0; } .container { max-width: 400px; margin: 100px auto; padding: 20px; background-color: #fff; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); } h1 { font-size: 24px; margin-bottom: 20px; } .welcome-message { margin-bottom: 20px; } .menu-item { background-color: #3498db; color: #ffffff; padding: 12px 24px; border: none; border-radius: 5px; cursor: pointer; margin: 10px; font-size: 18px; transition: background-color 0.3s ease, transform 0.2s ease; text-decoration: none; display: inline-block; } .menu-item:hover { background-color: #2980b9; transform: scale(1.05); } </style> </head> <body> <div class="container"> <h1>Menu</h1> <p class="welcome-message">Bienvenue, <?php echo $nom_utilisateur; ?>!</p> <div> <a class="menu-item" href="lien_page_1.php">Page 1</a> <a class="menu-item" href="lien_page_2.php">Page 2</a> <a class="menu-item" href="deconnexion.php">Déconnexion</a> </div> </div> </body> </html>
- et la page de connexion:
<?php session_start(); // Vérifier si un cookie de connexion existe if (isset($_COOKIE["nom_utilisateur"])) { // Utiliser les informations du cookie pour établir la session $_SESSION["nom_utilisateur"] = $_COOKIE["nom_utilisateur"]; // Rediriger l'utilisateur vers la page d'accueil header("Location: page_accueil.php"); exit(); } // Vérifier si le formulaire de connexion a été soumis if ($_SERVER["REQUEST_METHOD"] == "POST") { // Récupérer les données du formulaire $identifiant = $_POST["identifiant"]; // Peut être le nom d'utilisateur ou l'adresse e-mail $mot_de_passe_fourni = $_POST["mot_de_passe"]; // Charger les utilisateurs depuis le fichier JSON $utilisateurs = json_decode(file_get_contents('utilisateurs.json'), true); // Vérifier l'existence de l'utilisateur $utilisateur_trouve = false; foreach ($utilisateurs as $utilisateur) { if (($utilisateur['email'] == $identifiant || $utilisateur['nom'] == $identifiant) && password_verify($mot_de_passe_fourni, $utilisateur['mot_de_passe'])) { // Définir la session avec le nom d'utilisateur $_SESSION["nom_utilisateur"] = $utilisateur['nom']; // Définir un cookie de connexion setcookie("nom_utilisateur", $utilisateur['nom'], time() + 3600 * 24 * 30); // Expire dans 30 jours // Rediriger l'utilisateur vers la page d'accueil header("Location: page_accueil.php"); exit(); } } // Afficher un message d'erreur si l'authentification échoue echo "Identifiants invalides. Veuillez réessayer."; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Connexion</title> </head> <body> <h1>Connexion</h1> <form method="post" action=""> <label for="identifiant">Nom d'utilisateur ou E-mail:</label> <input type="text" name="identifiant" required><br> <label for="mot_de_passe">Mot de passe:</label> <input type="password" name="mot_de_passe" required><br> <button type="submit">Se connecter</button> </form> </body> </html>
Merci de votre aide.
- Problème de déconnexion cookies php
- Supprimer les cookies - Guide
- Easy php - Télécharger - Divers Web & Internet
- Déconnexion intempestive wifi - Guide
- Expert php pinterest - Télécharger - Langages
- La cause de ce problème peut être la désactivation ou le refus des cookies. ✓ - Forum PHP
3 réponses
Bonjour,
Procédure sur chrome afin de supprimer les cookies:
- Sur votre ordinateur, ouvrez Chrome.
- En haut à droite, cliquez sur Plus .
- Cliquez sur Plus d'outils. Effacer les données de navigation.
- En haut de la page, choisissez une période. ...
- Cochez les cases face à "Cookies et données de site" et "Images et fichiers en cache".
- Cliquez sur Effacer les données
bonjour,
Je ne vois pas l'avantage de supprimer les cookies. Tu ne peux de toutes façons pas faire confiance à ce que fait le navigateur.
Il me semble amplement suffisant de supprimer les variables de sessions. Une fois que tu as fait cela, les cookies n'ont plus aucune valeur.
et comment faire parce que Jai un chat mais je veux quille vérifié si la personne existe toujours parce que même une fois connecter est quand je le supprime sons compte sa le déconnecte pas et il peut toujours commenter
<?php session_start(); // Vérifier si l'utilisateur est connecté if (!isset($_SESSION['nom_utilisateur'])) { echo "Vous devez être connecté pour envoyer un message."; exit(); } $message = $_POST['message'] ?? ''; $ip = $_SERVER['REMOTE_ADDR']; // Récupère l'adresse IP du client if ($message !== '') { $timestamp1 = date('H:i:s'); $timestamp2 = date('Y-m-d H:i:s'); $utilisateur_connecte = $_SESSION['nom_utilisateur']; // Format pour discussions1.txt (sans l'adresse IP) $message1 = "$timestamp1 - $utilisateur_connecte - " . htmlspecialchars($message) . "\n"; // Format pour discussions2.txt (avec l'adresse IP) $message2 = "$timestamp2 - $ip - $utilisateur_connecte - " . htmlspecialchars($message) . "\n"; // Enregistrement dans discussions1.txt file_put_contents('discussions1.txt', $message1, FILE_APPEND | LOCK_EX); // Enregistrement dans discussions2.txt file_put_contents('discussions2.txt', $message2, FILE_APPEND | LOCK_EX); } ?>
code pour te retrouver
<?php session_start(); session_set_cookie_params(0); // Vérifier si un cookie de connexion existe if (isset($_COOKIE["nom_utilisateur"])) { // Utiliser les informations du cookie pour établir la session $_SESSION["nom_utilisateur"] = $_COOKIE["nom_utilisateur"]; // Rediriger l'utilisateur vers la page d'accueil header("Location: accueil.php"); exit(); } // Vérifier si le formulaire de connexion a été soumis if ($_SERVER["REQUEST_METHOD"] == "POST") { // Récupérer les données du formulaire $identifiant = $_POST["identifiant"]; // Peut être le nom d'utilisateur ou l'adresse e-mail $mot_de_passe_fourni = $_POST["mot_de_passe"]; // Charger les utilisateurs depuis le fichier JSON $utilisateurs = json_decode(file_get_contents('../fichier/secure-5255124825/Compte/utilisateurs.json'), true); // Vérifier l'existence de l'utilisateur $utilisateur_trouve = false; foreach ($utilisateurs as $utilisateur) { if (($utilisateur['email'] == $identifiant || $utilisateur['nom'] == $identifiant) && password_verify($mot_de_passe_fourni, $utilisateur['mot_de_passe'])) { // Définir la session avec le nom d'utilisateur $_SESSION["nom_utilisateur"] = $utilisateur['nom']; // Définir un cookie de connexion setcookie("nom_utilisateur", $utilisateur['nom'], time() + 3600 * 24 * 30); // Expire dans 30 jours // Rediriger l'utilisateur vers la page d'accueil header("Location: accueil.php"); exit(); } } // Afficher un message d'erreur si l'authentification échoue echo "Identifiants invalides. Veuillez réessayer."; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Connexion</title> </head> <body> <h1>Connexion</h1> <form method="post" action=""> <label for="identifiant">Nom d'utilisateur ou E-mail:</label> <input type="text" name="identifiant" required><br> <label for="mot_de_passe">Mot de passe:</label> <input type="password" name="mot_de_passe" required><br> <button type="submit">Se connecter</button> <!-- Ajout du bouton d'inscription avec le lien --> <button type="button" onclick="window.location.href='http://compte/inscription.php'">Inscription</button> </form> </body> </html>
merci mais tu veut dire quoi par l'utilisateur de tricher en envoyant un cookie.
et non sa marche pas il peut plus commanter parce que le cookies sur la page marche pas je veut que le php verifie si le compte existe toujours
<?php session_start(); // Vérifier si l'utilisateur est connecté if (!isset($$_SESSION["nom_utilisateur"] = $_COOKIE["nom_utilisateur"])) { echo "Vous devez être connecté pour envoyer un message."; exit(); } $message = $_POST['message'] ?? ''; $ip = $_SERVER['REMOTE_ADDR']; // Récupère l'adresse IP du client if ($message !== '') { $timestamp1 = date('H:i:s'); $timestamp2 = date('Y-m-d H:i:s'); $utilisateur_connecte = $_SESSION['nom_utilisateur']; // Format pour discussions1.txt (sans l'adresse IP) $message1 = "$timestamp1 - $utilisateur_connecte - " . htmlspecialchars($message) . "\n"; // Format pour discussions2.txt (avec l'adresse IP) $message2 = "$timestamp2 - $ip - $utilisateur_connecte - " . htmlspecialchars($message) . "\n"; // Enregistrement dans discussions1.txt file_put_contents('discussions1.txt', $message1, FILE_APPEND | LOCK_EX); // Enregistrement dans discussions2.txt file_put_contents('discussions2.txt', $message2, FILE_APPEND | LOCK_EX); } ?>
non depuis le php et es que j'utilise plutôt MYsql