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 :

Variable de $_SESSION disparue


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 263
    Par défaut Variable de $_SESSION disparue
    Bonjour,

    J'ai le fichier setSession.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $_SESSION[$_POST['cle']] = $_POST['valeur'];
    ?>
    ... qui est appelé par la requête Ajax (via JQuery) à partir d'une page web comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function setSession(cle, valeur)
        {
            // alert('variable dans session');
            $.ajax({
                type: "POST",
                url: "http://localhost/test/setSession.php",
                data: "cle="+cle+"&valeur="+valeur,
                success: function (){
                    alert('Donnée sauvegardée);
            }
            });
        }
    ... la requête fonctionne et la variable est bien renseignée dans $_SESSION par le serveur lorsqu'il exécute le fichier setSession.php.
    J'ai vérifié en utilisant le mode debug et en affichant le contenu de la variable $_SESSION.

    Plus tard, la page web qui a envoyé cette requête Ajax est soumise (soit par form ou href).
    Quand le serveur PHP reçoit cette requête il essaie de lire la variable renseignée précédemment en $_SESSION mais celle-ci n'existe pas alors.

    Pourquoi celle-ci a disparue ? Comment la rendre persistante en mémoire pour pouvoir la lire lorsque la page web est soumise ?

    Merci d'avance.

    A+

  2. #2
    Membre éprouvé
    Inscrit en
    Décembre 2009
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 80
    Par défaut
    Il ne manquerait pas l'appel à la fonction session_start() pour démarrer la session ?

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 263
    Par défaut
    Citation Envoyé par OlgarK Voir le message
    Il ne manquerait pas l'appel à la fonction session_start() pour démarrer la session ?
    Je ne pense pas puisque le tableau $_SESSION existe bien lors de la soumission de la page web.

    C'est seulement la variable renseignée précédemment dans ce tableau qui n'existe plus.

    A+

    Citation Envoyé par OlgarK Voir le message
    Il ne manquerait pas l'appel à la fonction session_start() pour démarrer la session ?
    Je viens de rajouter cette commande mais la variable est toujours absente lors de sa lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    session_start();
     
    $_SESSION[$_POST['cle']] = $_POST['valeur'];
     
    ?>
    A+

  4. #4
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    Comme les variables de session sont stockées chez le client, normallement il ne devrait pas y avoir de problème.

    Ne serais-ce pas une réinitialisation involontaire de cette variable ?.

    du style if(condition) { unset($_SESSION[clef]) }

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 263
    Par défaut
    Citation Envoyé par speedy_g Voir le message
    Comme les variables de session sont stockées chez le client, normallement il ne devrait pas y avoir de problème.

    Ne serais-ce pas une réinitialisation involontaire de cette variable ?.

    du style if(condition) { unset($_SESSION[clef]) }
    Non pas du tout.

    J'ai même essayé de passer par $_SERVER et $_REQUEST mais le problème reste le même.

    A+

  6. #6
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 263
    Par défaut
    Après plusieurs tests, il semblerait que je travaille sur 2 sessions distincts.

    Quand j'affiche la page web la session contient 30 variables.

    Quand la page web lance le script Ajax, la session NE CONTIENT QUE la variable renseignée.

    Quand la page web est soumise par la suite, je retrouve le même contenu de la session avec ses 30 variables et la variable renseignée n'est pas présente.

    Comment donc travailler avec la même session ? Ou plutôt pourquoi l'objet n'est-il pas le même alors qu'un objet $_SESSION est normalement persistent pour un utilisateur à travers sa navigation.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] les variables de $_SESSION
    Par safa.nasich dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2011, 06h56
  2. Variable $_SESSION automatisé
    Par mangafan dans le forum Langage
    Réponses: 8
    Dernier message: 18/04/2006, 16h45
  3. [Sécurité] variable $_session dans du javascript
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 19h38
  4. Changer une variable $_SESSION -> Formulaire
    Par Nadd dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2006, 23h37
  5. Pb passage de variable $_GET => $_SESSION
    Par sk8world dans le forum Langage
    Réponses: 3
    Dernier message: 19/12/2005, 15h18

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