Bonsoir,

Je rencontre un étrange problème lorsque je veux me déconnecter de mon site...
1ère fois que je suis confronté à cette étrangeté !?!

Voici le script tout simple de déconnexion appelé en include :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if( isset($_SESSION['membre']) )
    // deconnexion
    if( isset($_GET['action']) && $_GET['action'] == 'deconnexion' )
    {
        $pseudo = $_SESSION['membre']['pseudo'];
        setcookie('pseudo', '', time() - 3600);
        setcookie('id', '', time() - 3600);
        setcookie('identificateur', '', time() - 3600);
        $sql = 'UPDATE connexion SET identificateur=NULL WHERE id=' . $_SESSION['membre']['id'];
        $db -> query($sql);
        $_SESSION = array();
        session_destroy();
        $message = 'A bientôt ' . $pseudo . ', vous êtes à présent déconnecté du site.';
    }
    //else echo 'problème !!!';
else
{
    $message = 'Vous ne pouvez pas vous déconnecter puisque vous n\'êtes pas ou plus connecté.';
}
die(require('./inc/messages.inc.php'));
?>
Le truc bizarre, c'est que je n'ai pas de message d'indiqué, si je fait un echo juste après la condition if( isset($_SESSION['membre']) ), j'entre dans la condition , et donc j'ai une erreur $sql, puisque $_SESSION['membre']['id'] n'existe plus.

Si je décommente //else echo 'problème !!!';, j'obtiens par contre ce qui devrait-être, c'est à dire l'affichage du message Vous ne pouvez pas vous déconnecter puisque vous n'êtes pas ou plus connecté.

Je comprends pas du tout ce qui se passe, pour quoi le fait de rajouter un else dans le 1er if, me fait entrer dans le else.
Et pourquoi un echo dans le 1er if me fait entrer dans la condition, alors que s'il yen a pas, je ne rentre pas dedans car je n'ai pas l'erreur de requête.

Je suis certains que les variables sessions n'existent plus, puisqu'un print_r($_SESSION) me donne bien array().

Quelqu'un saurait me fournir une explication à cette réaction ?