Problème de déconnexion

Fermé
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 - 5 juil. 2016 à 13:35
delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 - 15 juil. 2016 à 12:10
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 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 658
Modifié par jordane45 le 5/07/2016 à 14:57
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 dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 48
5 juil. 2016 à 15:46
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 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 658
5 juil. 2016 à 16:49
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 dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 48
5 juil. 2016 à 17:21
ok voici ce que j'ai
"Variables POST
Array ( )
Variables SESSION
Array ( [id] => 1 [login] => superviseur [is_admin] => 1 )"
0
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 658
5 juil. 2016 à 17:24
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 dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 48
14 juil. 2016 à 11:20
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 jeudi 14 juillet 2016 Statut Membre Dernière intervention 21 juillet 2016 > delavega470 Messages postés 298 Date d'inscription dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020
Modifié par Lophan le 14/07/2016 à 20:00
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 dimanche 9 février 2014 Statut Membre Dernière intervention 24 mars 2020 48
15 juil. 2016 à 12:10
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