IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

La fonction session_destroy() ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut La fonction session_destroy() ne fonctionne pas
    Bonsoir tout le monde

    Je suis en train de mettre en place une application web qui utilise l'authentification HTTP et les sessions pour l'accès utilisateur. Pour le loguer pas de problèmes, tout marche ; mais quand je veux détruire la session pour une déconnexion avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    session_start();
     
    $_SESSION = array();
    session_destroy();
     
    ?>
    lorsque je reviens en arrière ou que je redemande une page de l'application, je suis toujours identifié, jusqu'à ce que je ferme firefox ou que j'efface les traces "sessions d'identifications" ...

    Je ne vois pas où est le problème, peut être une mauvaise configuration de mon serveur (les valeurs de PHP sont celles par défaut).

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Points : 303
    Points
    303
    Par défaut
    Cher quel hébergeur tu es?

    je ne sais pas si tu utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // On supprime ttes les variables de la session
    session_unset();
     
    // On détruit totalement la session
    session_destroy();
    ça fonctionne?

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Essaie si ça ne marche toujours pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION["tavariable"])
    Tu devrais également vérifier la valeur de retour de session_destroy() (ça doit être true)

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    bonsoir

    je suis mon propre hébergeur

    je développe le script sur easyphp, mais sur mon serveur le résultat est le même, avec les valeurs par défaut de php en ce qui concerne les sessions.

    voici le nouveau code de logout.php :

    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
    error_reporting(E_ALL);
     
    //Détruire l'authentification
    $auth = FALSE;
     
    //Détruire le contenu de $_SERVER[]
    $_SERVER['PHP_AUTH_USER'] = NULL;
    $_SERVER['PHP_AUTH_PW'] = NULL;
     
    // On supprime ttes les variables de la session
    session_unset();
     
    // On détruit totalement la session
    $test = session_destroy();
     
    if ($test) {
    	echo "session détruite";
    } else {
    	echo "session pas détruite";
    }
    Le résultat est : "session détruite", et je suis toujours identifié ... je suis un peu blasé ^^

    j'ai essayé de modifier le code pour me baser non plus sur une authentification HTTP mais par cookie, mais a peu près tout mon code est à revoir ...

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    au lieu de faire session_unset, session_destroy fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Détruit toutes les variables de session
    $_SESSION = array();
     
    // Détruit le cookie de session
    if (isset($_COOKIE[session_name()])) {
       setcookie(session_name(), '', time()-42000, '/');
    }
     
    // Détruit la session la session.
    session_destroy();

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    salut

    très bizarre, ca ne fonctionne toujours pas

    je ne sais pas si c'est lié, mais en plaçant

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    print session_id();
    sur une page avant déconnexion et sur la page de déconnexion, le PHPSESSID est identique (normal), mais en retournant sur la page précédente, cet ID change, toujours en étant identifié ...

    est-ce lié à la méthode d'authentification ? Merci de votre aide en tout cas

  7. #7
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 288
    Points
    7 288
    Par défaut
    Si j'ai bien compris tu essaye de détruire une session que tu as ouverte sur une autre page?
    la fonction session_destroy t'affiche quel warning?
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/09/2006, 17h46
  2. [Mail] fonction mail qui fonctionne pas
    Par digger dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2006, 22h28
  3. fonction ridicule qui fonctionne pas sous firefox
    Par Isses dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2006, 12h08
  4. fonction plpgsql qui fonctionne pas...
    Par Empty_body dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/01/2006, 18h22
  5. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo