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 :

Petit problème, session_destroy()


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Par défaut Petit problème, session_destroy()
    Bonjour à tous!

    En cette veille de Noel, php n'a pas l'air decidé à me faire de cadeau...

    Voici mon problème:

    Sur ma page d'accueil, j'ai un petit formulaire permettant de se loguer.
    Ce petit formulaire renvoit vers un script php qui se charge de vérifier si l'identification est ok, qui ouvre une session avec session_start() et qui met le login saisit dans la variable $_SESSION['login']

    J'ai ensuite un include('membre.php') qui me permet d'afficher la page membre sur laquelle je vérifie que la variable $_SESSION['login'] existe avec if(isset($_SESSION['login']))

    Jusque la tout va bien puisque la page s'affiche bien lorsque que le login est valable.

    C'est maintenant que ça va coincer...

    Je clique sur un lien qui me redirige vers un script php dans lequel se trouve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $_SESSION = array();
    session_destroy();
    header('Location: ./index.php');
    ?>
    Et la ma console d'erreur m'indique

    Trying to destroy uninitialized session in disconnect.php
    A noter que je travaille sous MacOS Leopard et que j'utilise MAMP.

    Merci à ceux qui pourront m'aider

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Comment voulez-vous que le serveur récupère la session sans l'appel à session_start ? (l'exception étant un démarrage automatique de la session - directive session.auto_start - mais est déconseillé)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Par défaut
    Je ne comprend pas bien ce que vous voulez dire...

    session_start est bien appelé dans mon script login.php

    D'ailleurs je retrouve bien la session dans le dossier /tmp de MAMP.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Oui mais pas dans le code de votre script effectuant la déconnexion alors qu'il y est nécessaire ou alors il est incomplet

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut


    Là je me sent a l'aise parce que j'ai galéré sur les sessions...
    Toutes tes pages concernées par ta session doivent comporter
    session_start();
    Y compris la page de destruction de session...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Par défaut
    Ok merci pour ce renseignement.

    Mais dans ce cas on se retrouve avec des warnings qui nous indiquent que la session à déjà été ouverte à tel endroit. (je n'ai pas le message exact sous les yeux.)

    On peut donc négliger ces messages?

    Bonne fin de journée

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut Même problème
    Moi aussi j'ai ce message avec session_destroy(), et voici mon texte "deconnexion.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    session_start();
    session_unset();
    session_write_close();
    session_destroy();
    header ("location:index.php");
    ?>
    Voilà les messages d'erreur qui m'arrivent :
    Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in .../deconnexion.php on line 5

    Warning: Cannot modify header information - headers already sent by (output started at .../deconnexion.php:5) in .../deconnexion.php on line 6

    Je ne comprends pas que la déconnexion fonctionne sans problème en local (EasyPHP 2.0 avec Windows Vista), et que ces messages apparaissent lorsque les pages sont disponibles "en vrai" chez Free (FileZilla).
    Au secours !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    hello

    en haut de vos pages, index.php .... vous avez aussi session_start(); ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut J'ai résolu mon problème !
    Voici ma page "deconnexion.php", qui fonctionne bien (plus de message d'erreurs !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    //Protection de cette page par "session_start"
    session_start();
    if (isset($_SESSION["login"])){
         $login=$_SESSION["login"];
         $mdp=$_SESSION["mdp"];}
    //Fin de protection
     
    session_destroy();
    header ("location:index.php");
    ?>
    J'ai compris pourquoi je ne voyais pas de message d'erreur en local : il s'affichait très vite, et était remplacé immédiatement par ma page "index.php" !

    Et en haut de ma page "index.php", j'ai bien session_start(); !
    Actuellement, je travaille avec MacOS 10.4.11 et MAMP 1.7.1.

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 20h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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