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

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