Problème de déconnexion

delavega470 Messages postés 316 Statut Membre -  
delavega470 Messages postés 316 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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                                                                 
    0
  2. delavega470 Messages postés 316 Statut Membre 48
     
    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! "
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Une erreur de copier coller/
      $sql ="SELECT id_uti FROM utilisateur WHERE mdp =:pass_hache AND login=:login";
      
      0
  3. delavega470 Messages postés 316 Statut Membre 48
     
    ok voici ce que j'ai
    "Variables POST
    Array ( )
    Variables SESSION
    Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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.
      0
    2. delavega470 Messages postés 316 Statut Membre 48
       
      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');
      ?> 
      0
      1. Lophan Messages postés 3 Statut Membre > delavega470 Messages postés 316 Statut Membre
         
        Bonjour,

        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');
        
        ?>
        
        0
  4. delavega470 Messages postés 316 Statut Membre 48
     
    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
    0