Problème de déconnexion
delavega470
Messages postés
298
Date d'inscription
Statut
Membre
Dernière intervention
-
delavega470 Messages postés 298 Date d'inscription Statut Membre Dernière intervention -
delavega470 Messages postés 298 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous j’ai un problème avec la déconnexion je me déconnecte mais quand je clique sur le retour du navigateur je me connecte encore à la page j’ai mis
avant le doctype
et le code de ma déconnexion est
Le code de mon index.php
Quelqu’un peut –il m’aider svp?
avant le doctype
<?php session_start(); ?>
et le code de ma déconnexion est
<?php session_start(); $_SESSION = array(); unset($_SESSION); session_destroy(); // On detruit la session pour sortir header('location:../index.php'); ?>
Le code de mon index.php
<?php include('codes/bdcon.php'); if (isset($_POST['connect'])) { // Hachage du mot de passe $pass_hache = sha1($_POST['password']); $login=$_POST['login']; $r='SELECT id_uti FROM utilisateur WHERE mdp = "'.$pass_hache.'" AND login="'.$login.'" '; $id = $bdd->query($r); $resultat = $id->fetch(); $_SESSION['id']=$id; if(($resultat) AND $pass_hache=="b3c18d792895e372754eac18de688774762d033d") { if (isset($_SESSION['id'])) { $_SESSION['login']=$_POST['login']; //un redirection vers un fichier header('location:admin/home.php'); } else { header('location:index.php'); } } else if (($resultat) AND $pass_hache!="b3c18d792895e372754eac18de688774762d033d") { if (isset($_SESSION['id'])) { $_SESSION['login']=$_POST['login']; //un redirection vers un fichier header('location:uti/home.php'); } else { header('location:index.php'); } } else { echo "Mauvais login ou mot de passe!"; } } ?>
Quelqu’un peut –il m’aider svp?
4 réponses
Bonjour,
Commence par ajouter dans ton script index.php un print de POST et un de SESSION
Il est également préférable de récupérer proprement les variables AVANT de les utiliser.
Voici ton comple modifié et légèrement amélioré :
Dis nous ce que ça te donne.
Cordialement,
Jordane
Commence par ajouter dans ton script index.php un print de POST et un de SESSION
Il est également préférable de récupérer proprement les variables AVANT de les utiliser.
Voici ton comple modifié et légèrement amélioré :
<?php //-------------------------------------------// //démarrage des sessions //-------------------------------------------// session_start(); //-------------------------------------------// //affichage des erreurs php //-------------------------------------------// error_reporting(E_ALL); //-------------------------------------------// //connexion à la BDD //-------------------------------------------// include('codes/bdcon.php'); //-------------------------------------------// // Le temps des tests : //-------------------------------------------// echo "<br>Variables POST <br>"; print_r($_POST); echo "<br>Variables SESSION <br>"; print_r($_SESSION); //-------------------------------------------// //-------------------------------------------// //récupération "propre" des variables //-------------------------------------------// $login=!empty($_POST['login']) ? $_POST['login'] : NULL; $pass_hache = !empty($_POST['password']) ? sha1($_POST['password']) : NULl; //-------------------------------------------// //traitement du formulaire //-------------------------------------------// if ($login && $pass_hache ) { //Utilisation des requêtes préparées pour éviter les failles d'injection sql $sql ="SELECT id_uti FROM utilisateur WHERE mdp =:pass_hache: AND login=:login"; $datas = array(':pass_hache'=>$pass_hache, ':login'=>$login); //bloc try/catch pour trapper les erreurs try{ $prepare = $bdd->prepare($sql); $prepare->execute($datas); }catch(Exception $e){ //en cas d'erreur dans la requete echo "Error ! ".$e->getMessage(); } //on fait un fetch du résultat de la requete $resultat = $prepare->fetch(); if(!empty($resultat)) { //initialisation variables de session $_SESSION['id'] = $resultat['id']; $_SESSION['login'] = $login ; $url2 = 'index.php'; switch($pass_hache){ case "b3c18d792895e372754eac18de688774762d033d": $url1 = 'admin/home.php'; $_SESSION['is_admin'] = true; break; case "b3c18d792895e372754eac18de688774762d033d": $url1 = 'uti/home.php'; $_SESSION['is_admin'] = false; break; default: echo "Mauvais login ou mot de passe!"; exit(); break; } //redirection $redirection = !empty($id) ? $url1 : $url2; header('location:'.$redirection); exit(); } else { echo "Mauvais login ou mot de passe!"; } }
Dis nous ce que ça te donne.
Cordialement,
Jordane
une erreur de syntaxe:
"Variables POST
Array ( [login] => superviseur [password] => superviseur [connect] => Se connecter )
Variables SESSION
Array ( ) Error ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ': AND login ='superviseur'' à la ligne 1Mauvais login ou mot de passe! "
"Variables POST
Array ( [login] => superviseur [password] => superviseur [connect] => Se connecter )
Variables SESSION
Array ( ) Error ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ': AND login ='superviseur'' à la ligne 1Mauvais login ou mot de passe! "
ok voici ce que j'ai
"Variables POST
Array ( )
Variables SESSION
Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
"Variables POST
Array ( )
Variables SESSION
Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
Bonjour,
Pour se déconnecter avec les sessions, ils suffit d'effacer le contenu du tableau $_SESSION comme ceci :
Pour se déconnecter avec les sessions, ils suffit d'effacer le contenu du tableau $_SESSION comme ceci :
<?php session_start(); $_SESSION = array(); /* Comme le contenu de $_SESSION est effacé, il n'y a pas besoin de faire appel aux instructions unset($_SESSION), ou bien session_destroy(). */ // Redirection header('Location: page.php'); ?>