Problème de déconnexion

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
 <?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

  1. Modérateur
    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é :
    
    <?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                                                                 
    1. 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! "
      1. Modérateur
        Une erreur de copier coller/
        $sql ="SELECT id_uti FROM utilisateur WHERE mdp =:pass_hache AND login=:login";
        
    2. ok voici ce que j'ai
      "Variables POST
      Array ( )
      Variables SESSION
      Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
      1. Modérateur
        Donc tes variables de session ne sont pas détruites.
        Tu as fais ton "logout" sur ton site ?

        Si oui... montres nous le code qui appelles ton logout.
      2. oui je fais un bouton deconnexion voici le code
        <?php
        session_start();
        $_SESSION = array();
        unset($_SESSION);
        session_destroy(); // On detruit la session pour sortir
        header('location:../index.php');
        ?> 
      3. @delavega470Bonjour,

        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');
        
        ?>
        
    3. le resultat est toujours pareil
      "Variables POST
      Array ( )
      Variables SESSION
      Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
      je ne comprend pas pourquoi cela ne marche pas